2013-04-24 119 views
4

的初始化正确的语法,我怎么能初始化指针数组用C正确一个指向数组的指针

这里是我的代码

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

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

+1

这将是'int(* data)[10]'.'int(* data [10] )''和'int * data [10]没有什么不同'' – 2013-04-24 13:57:17

+0

我会使用'int ** date;'所以如果数组的大小将不得不改变它不需要两个变化 – 2013-04-24 14:00:15

+0

我正要回答这个问题问题。但是当我看到三个SO回答的重量级时退出了。 – 2013-04-24 14:05:14

回答

-1
int **data; 
int a[10]; 
data = &a; 

你可以定义建议的资料其他:int (*date)[10];
但我相信使用它作为一个双指针将使更多的降神要数组的大小从10更改为其他任何一天!

+0

因为'&a [0]'被分配给'int **'是一个'int *',所以这段代码不会干净地编译。 – 2015-02-12 06:30:46

+0

你说得对,修好了。 – 2015-02-14 17:06:54

1

变量data是一个指针数组,你试着给它分配一个指针。如果你想声明data为指针,你必须重新安排括号的数组:

int (*data)[10]; 

我建议你阅读有关clockwise/spiral rule

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

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

    int a[10]; 
    data = &a; 
    
+0

谢谢....它的作品... – user2314818 2013-04-24 13:57:41

2

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

int (*data)[10]; 

请注意,您可以使用cdecl.org获得有关这些事情的帮助。

为了您的原代码,它说:

申报数据指针数组10为int

对于矿山,它说:

申报数据指针数组10的int