如何在C中正确初始化指向数组的指针
这是我的代码
int (*data[10]);
int a[10];
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */
我怎样摆脱这个警告?
答案 0 :(得分:6)
正确声明指向数组的指针:
int (*data)[10];
为其指定一个指向数组的指针:
int a[10];
data = &a;
答案 1 :(得分:2)
我相信你的括号错了。你需要:
int (*data)[10];
请注意,您可以使用cdecl.org获取有关这些内容的帮助。
对于您的原始代码,它说:
将数据声明为指向int
的指针的数组10
对我来说,它说:
将数据声明为指向int
的数组10的指针
答案 2 :(得分:1)
变量data
是一个指针数组,您尝试为其指定一个指针。如果要将data
声明为指向数组的指针,则必须重新排列括号:
int (*data)[10];
我建议您阅读clockwise/spiral rule。
答案 3 :(得分:-1)
int **data;
int a[10];
data = &a;
您可以按其他建议定义数据:int (*date)[10];
但我相信,将它作为一个双指针使用会在你希望将该数组的大小从10改为其他任何东西时产生更多的优势!