用于初始化指向数组的指针的正确语法

时间:2013-04-24 13:53:34

标签: c pointers

如何在C中正确初始化指向数组的指针

这是我的代码

int (*data[10]);
int a[10];
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */

我怎样摆脱这个警告?

4 个答案:

答案 0 :(得分:6)

  1. 正确声明指向数组的指针:

    int (*data)[10];
    
  2. 为其指定一个指向数组的指针:

    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改为其他任何东西时产生更多的优势!