我今天在接受采访时,被问到以下两种声明之间的区别:
int *A[10];
和
int (*A)[10];
我不知道。如果您认为我遗漏了一些重要的指针“指针”,请也告诉我。谢谢。
第一个声明了一个由 10 个指针组成的数组int
,第二个是一个指向 10 个int
s 的数组的指针。
[]
绑定比 更紧密*
,所以第一个可以等效地写成
int *(A[10]);
给定
int *A[10]; // an array of 10 int pointers
一元的相对优先级并使之*
等价[]
于
int *(A[10]); // same
第二个声明将隐式排序更改为
int (*A)[10]; // a pointer to an array of ten ints