指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针

指针数组和数组指针:

指针数组:是一个数组,数组每个元素是一个指针,所占空间大小由数组决定。

数组指针:是一个指针,指针指向一个数组,所占空间大小为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])():函数指针数组的指针数组,这是一个数组,数组的元素是存放函数指针数组的地址