创建2d数组的数组

时间:2010-09-03 13:21:45

标签: c

我有很多数组

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 个答案:

答案 0 :(得分:3)

这两个数组的类型不是double(*)[2]foo的类型为double [3][2],栏的类型为double [5][2]。外部数组的大小是隐含的,而不是缺席。

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

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

答案 1 :(得分:2)

没有typedef的正确语法是:

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

答案 2 :(得分:0)

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

这不起作用,因为bar的内存位置与foo的内存位置无关,foobar的类型不是' t等于double (*)[2]的元素类型,必须是double类型。