首先看看下面两条语句
(1) int * p[4]
(2) int (*p)[4]
如何区分它们呢?
我们的判断条件是方括号("[ ]")的优先级要高于星号(' * ')
(1) p首先和方括号结合,表示数组,然后与星号结合表示指针,总的来说p表示一个长度为4的数组,数组的元素都是指针。p就是指针数组。
(2)p与星号结合,表示指针,在和方括号结合表示数组,总的来说p表示一个指针,指针指向的是一个长度为4的int型数组。p是数组指针。
p先和谁结合,p就是个什么东东
同理,int *foo() 和int (*foo)()中,小括号优先级高于星号
则int *foo()表示方返回值为指针的函数,int (*foo)()表示函数指针。