·指针数组
指针数组本质上是数组,是一个存放指针的数组。
Eg: ①int *arr1[10];
②char *arr2[10];
③char **arr3[5];
① ② ③ 均为指针数组, ①是数组(int*类型)中元素是 (int*类型) ;
②是数组(char*类型)中元素是(char*类型);
③ 数组中存放 二级指针
·数组指针
数组指针本质上是指针,是一个指向数组的指针。 指针变量存放数组地址
Eg:int *pint; 指向整型数据的指针:
float *pf; 指向浮点型数据的指针;
int *p[10]; 指针数组 数组中存放类型为 int * 类型的指针;
int (*p)[10]; 指针数组 指向整形数组的指针;
注: int *p[10]; & int (*p)[10];
p 先与什么结合,即可表示 p 本质是什么
" [ ] " 的优先级于 " * " 的优先级
·函数指针
函数指针本质上是指针,是一个指向函数的指针,即指针变量保存的是函数的地址
Eg: void test(char* str);
void (*p)(char*) //p是一个指针,并且指向一个函数,这个函数参数是char*,返回类型是void型
哪一个可以存放函数test 的地址?
void (*p1)();
void *p2();
首先,能给储存地址,就要求p1或p2是指针
p1可以存放。p1先和*结合,即p1是指针,指针指向一个函数,指向的函数没有参数,返回值为空
(*(void(*)())0)();
void (*signal(int,void(*)(int)))(int); 简化为:void (*)(int) signal(int,void(*)(int));
·函数指针数组
数组是一个存放相同类型数据的存储空间,要把 函数的地址 存到一个数组中,那这个数组就叫函数指针数组。
如何定义:
int (*p1[10])(); √ p1先和“ [ ] ”结合,说明p1是数组,数组内容是 int(*)()类型的函数指针
int *p2[10](); ×
int (*)()p3[10]; × 定义常函数指针数组
用途:转移表
例子:计算器
·指向函数指针数组的指针
指向函数指针数组的指针,指针指向一个数组,数组的元素都是函数指针
Eg:
void (*(*a)[10])(); 函数指针数组的指针