数组是一种类型,指针也是一种类型,两者之间没任何联系。指针表示地址。数组和数组元素之所以可以用指针来表示,是由于数组是一种连续存放数组元素的类型和数组的其他性质。
要准确识别数组与指针结合的类型,必须熟练运算符的优先级,先跟谁结合就是什么类型:
从高到低:()聚组,()函数 ,[ ]下表引用 , *间接访问;
(1)指针数组 :*p[ ]
p先跟[ ]结合成数组,p[ ]整体再跟*结合成指针数组,数组里面放的是指针;
(2) 数组指针 :(*p)[ ]
因为()优先级高,所以p先跟*结合指针,然后再跟[ ]结合成数组指针,它是一个指针,指向数组;
(3)函数指针 :(*p)( )
p先跟*结合成指针,再跟()结合成函数指针,它是一个指针,指向一个函数。
(4)函数指针数组 :(*p[ ])( )
与(2)类似,p先跟[ ]结合成数组,再跟*结合成指针数组,最后跟()结合成函数指针数组,它是一个数组,数组里面 放 的是指向函数的指针。
(5)指向函数指针数组的指针:(*(*p)[ ])( )
因为()的原因,p先跟*结合成指针,再跟[ ]结合成数组指针,再跟*结合成指针数组的指针,最后再跟()结合成指向 函数指针数组的指针。