4

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

这是我的代码

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

我怎样才能摆脱这个警告?

4

4 回答 4

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

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

    int a[10];
    data = &a;
    
于 2013-04-24T13:56:00.333 回答
2

我相信你的括号是错误的。你需要:

int (*data)[10];

请注意,您可以使用cdecl.org来获得这些方面的帮助。

对于您的原始代码,它说:

将数据声明为指向 int 的指针的数组 10

对于我来说,它说:

将数据声明为指向 int 数组 10 的指针

于 2013-04-24T13:56:35.347 回答
1

该变量data是一个指针数组,您尝试为其分配一个指针。如果要声明data为指向数组的指针,则必须重新排列括号:

int (*data)[10];

我建议您阅读有关顺时针/螺旋规则的信息。

于 2013-04-24T13:55:58.290 回答
-1
int **data;
int a[10];
data = &a;

您可以按照其他建议定义数据:int (*date)[10];
但我相信,在您希望将该数组的大小从 10 更改为其他任何值的那一天,将其用作双指针会更容易!

于 2013-04-24T13:55:42.343 回答