0

我知道:

Foo *array[10]; // array of 10 Foo pointers     

Foo (*array)[10]; // pointer to array of 10 Foos

但是,我并不真正理解这种符号背后的逻辑。也就是说,为什么第一部分创建一个指针数组,为什么第二部分创建一个指向数组的指针?

当然我可以很容易地记住这个符号,但我想知道它背后的逻辑。

4

1 回答 1

3

对于任何类型TT *表示一个新类型,“指向T”。

T = Foo[10], thenT *是一个指向十个数组的指针Foo

但是,该符号Foo * p[10]被贪婪地从左到右解析为(Foo *) p [10],因此是一个 10 的数组Foo *。要获得所需的指向数组的指针,您必须将变量名分组到更靠近星号的位置,即 soT (*p)Foo (*p) [10]

于 2013-06-28T20:36:13.410 回答