我有很多数组
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};
答案 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
的内存位置无关,foo
和bar
的类型不是' t等于double (*)[2]
的元素类型,必须是double
类型。