我今天接受了采访,并被问到以下两个声明之间的区别:
int *A[10];
和
int (*A)[10];
我不知道。如果你认为我错过了一些重要的指针'指针',请告诉我。感谢。
答案 0 :(得分:8)
第一个声明了一个指向int
的十个指针的数组,第二个指向一个指向十个int
的数组的指针。
[]
比*
更紧密,所以第一个可以等同地写成
int *(A[10]);
答案 1 :(得分: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