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

Notation: Pointer to array and array of pointers

本文关键字:指针 数组 表示      更新时间:2023-10-16

我知道:

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

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

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

对于任何类型TT *表示一个新类型,"指向T的指针"。

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

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