指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
指针数组和数组指针:
指针数组:是一个数组,数组每个元素是一个指针,所占空间大小由数组决定。
数组指针:是一个指针,指针指向一个数组,所占空间大小为4个字节(32位平台)。
int *p1[5];//p1先和[ ]结合,因此p1是数组,只不过数组元素为 int * 型;
int (*p2)[5];//p2先和“*”结合,因此p2是指针,只不过该指针指向 int 型数组。
区分数组指针和指针数组:“[ ]”的优先级高于“*”,因此p先和谁结合就代表p是什么。
函数指针和函数指针数组:
函数指针:是指针,存放函数的地址。
函数指针数组:是一个数组,数组每个元素是一个函数指针(函数的地址)。
指向函数指针数组的指针 :
指向函数指针数组的指针 :是一个指针,指针指向一个数组,该数组每个元素是一个指针,该指针指向一个函数。
举几个例子:
1)void (*p)():函数指针,p先和“*”结合,故为指针
2) void (*p[])():函数指针数组,是一个数组,数组的元素是函数的地址
3) void (*( *p)[10])():函数指针数组指针,是指针,指向的内容是函数指针数组
4) void (*( *p[20])[10])():函数指针数组的指针数组,这是一个数组,数组的元素是存放函数指针数组的地址