2012-06-08 107 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

這是關於優先級,而不是關聯性,不是? –