2

我今天在接受采访时,被问到以下两种声明之间的区别:

int *A[10];

int (*A)[10];

我不知道。如果您认为我遗漏了一些重要的指针“指针”,请也告诉我。谢谢。

4

2 回答 2

8

第一个声明了一个由 10 个指针组成的数组int,第二个是一个指向 10 个ints 的数组的指针。

[]绑定比 更紧密*,所以第一个可以等效地写成

int *(A[10]);
于 2012-06-08T12:57:10.027 回答
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 和 C++ 运算符优先级和关联性

于 2012-06-08T12:59:48.983 回答