2012-06-08 79 views
2

我今天在接受记者采访时,并提出以下两个声明的区别:这两个C声明有什么区别?

int *A[10]; 

int (*A)[10]; 

,我不知道。如果你认为我错过了一些重要的指针'指针',请让我知道。谢谢。

+3

有疑问时[CDECL](http://cdecl.org/) – Joe

+1

http://stackoverflow.com/questions/89056/如何阅读-c-声明 –

+0

@Joe真的很酷的链接。 –

回答

8

第一个声明一个指向int的十个指针的数组,第二个指针指向一个数组的十个int s。

[]结合比*更紧,所以第一可同样被写入

int *(A[10]); 
2

鉴于

int *A[10]; // an array of 10 int pointers 

一元*[]的相对优先级使这相当于

int *(A[10]); // same 

第二个声明改变了隐式排序来

int (*A)[10]; // a pointer to an array of ten ints 

C and C++ Operator Precedence and Associativity

+0

这是关于优先级,而不是关联性,不是? –