一.指针数组
指针数组是指针还是数组呢?
指针数组是数组,是一个存放指针的数组。
例如:1.int *arr[10];
因为方括号[]的优先级高于*的优先级,所以arr先与方括号[]结合。
2. char **arr[6]; 这是一个存放着二级指针的数组。
二.数组指针
数组指针是数组的地址。
例如:int (*p)[10];
解释:因p 先与*结合,说明p是一个指针变量,指针指向的是一个大小为10个整形的数组,所以p是一个指针,指向一个数组,叫数组指针。
三.函数指针
函数指针:保存函数地址的变量。
例如:void (*arr1)();
void *arr2();
两者的区别:首先第一个arr1先与*号结合,所以arr1是一个指针,指针指向的是一个函数,指向的函数无参数,返回值类型为void.
第二个是一个返回值为void *的一个函数,所以第一个是函数指针。
四.函数指针数组
函数指针数组:将函数的地址存放到数组中。
例如:int (*arr[10])();
arr先和[]结合,所以说明arr是一个数组,是int (*)()类型的函数指针。
五.指向函数指针数组的指针
指向函数指针数组的指针是一个指针,指针指向一个数组,数组的元素都是函数指针。
例如:void (*(*arr)[10])(const char *)
函数指针数组的指针