表示法:指向数组和指针数组的指针

时间:2013-06-28 20:30:59

标签: c++

我知道:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

T = Foo[10]时,T *是指向10 Foo数组的指针。

然而,符号Foo * p[10]从左到右,贪婪地解析为(Foo *) p [10],因此是一个十Foo *的数组。要获得所需的指向数组的指针,您必须将变量名称分组更接近星号,因此T (*p)Foo (*p) [10]