代码之家  ›  专栏  ›  技术社区  ›  Callum

创建二维阵列的阵列

c
  •  2
  • Callum  · 技术社区  · 16 年前

    double foo[][2] = { {1.0,3.0}, {2.6,10.0}, {0.0,0.0} };
    double bar[][2] = { {1.4,3.2}, {2.1,9.9}, {2.1,9.9}, {2.1,9.9}, {0.0,0.0} };
    

    所以这两种类型都是:

    double (*)[2]
    

    我想创建一个数组,所以我需要声明一个指向数组[2]的指针类型的数组

    double ((*array)[2])[] = {foo, bar};
    

    这种语法不起作用-有没有可能在C中这样做。

    我还尝试创建一个类型,但也没有成功:

    typedef double *mytype[2] ;
    mytype array[] = {foo, bar};
    
    3 回复  |  直到 16 年前
        1
  •  2
  •   caf    16 年前

    不使用typedef的正确语法是:

    double (*array[])[2] = {foo, bar};
    
        2
  •  3
  •   Marcelo Cantos    16 年前

    这两个数组不是类型 double(*)[2] . foo 属于类型 double [3][2] double [5][2] . 外部数组大小是隐含的,而不是不存在的。

    要创建这些元素的数组,请将它们用作指针,因此:

    typedef double (*mytype)[2];
    mytype array[] = { foo, bar };
    
        3
  •  0
  •   Sadeq    16 年前
    double ((*array)[2])[] = {foo, bar};
    

    这不起作用,因为 bar foo ,以及 福 和 不等于元素的类型 double (*)[2] 这是必须的 double