很久没有更新博客,今天我们来说说指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针之间的区别。
1. 首先 ,我们来说指针数组和数组指针。
指针数组是一个数组,数组的每个元素都是指针。
数组指针是一个指针,它指向一个数组。
举一个例子
int *p[2] 和 int(*p)[2]
则第一个就是指针数组,第二个就是数组指针。来判断的时候首先我们判断优先级的问题,[ ]优先级高于*,()优先级又高于[ ].所以第一个p先和2结合,是数组。第二个p先和*结合,是指针。
2.下面我们来说说函数指针、函数指针数组和指向函数指针数组的指针
函数指针是一个指向函数的指针,本质是一个指针。
函数指针数组是一个指向函数指针的数组,本质是一个数组。
函数指针数组的指针是一个指向函数指针数组的指针,本质是一个指针。
下面我们来举3个例子
int (*p)(int n) 是一个函数指针,p先与*结合,因此p是一个指针。后与(int n)结合,为函数指针。
int (*p[ ])(int n)是一个指向函数指针的数组,p先与[ ]结合为一个数组,再与*结合为指针数组,后与(int n)结合,就为一个指向函数指针的数组。
int *((*p[ ])(int n))是一个指向函数指针数组的指针,因为优先级()>[ ]>*,*p[ ]是一个指针数组,((*p[ ])(int n))是一个指向函数指针的数组 ,整体来看 int *((*p[ ])(int n))就是一个指向函数指针数组的指针了。