这两个C声明之间有什么区别?

时间:2012-06-08 12:56:00

标签: c

我今天接受了采访,并被问到以下两个声明之间的区别:

int *A[10];

int (*A)[10];

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

2 个答案:

答案 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

C and C++ Operator Precedence and Associativity

相关问题