一、前言
函数指针和数组指针中对于一般指针没有的就是我们交代函数或者指针的数据
二、函数指针的补充
1.两个代码的理解
I.(*(void)(*)()0)();
把0强制类型转换成:void(*)()函数指针类型-0就是一个函数的地址
调用0地址处的该函数
II.void(*signal(int,void(*)(int)))(int);
signal是一个函数声明;signal函数的参数有2个,第一个是int,第二个是函数指针,该函数指针指向的函数参数是int,返回类型是void;signal函数的返回类型也是一个函数指针,该函数指针指向函数的参数是int,返回类型是void。
补充:
我们有一种简洁的写法:void(*signal(int, void(*)(int)))(int); typedef void(*pfun_t)(int); pfun_t signal(int, pfun_t);
几点说明:
typedef unsigned int uint;//重命名的一般写法
typedef void(*)(int)pfun_t;//依照上面这应该是这样写的,但是这个是错误的
typedef void(*pfun_t)(int);//这才是正确的
三、指针函数*pa与pa是等价的
我们理解这个可以这样理解Add其实和&Add同义,所以我们可以用地址直接调用函数
四、函数指针数组
基本形式
int (*paar[10])(int,int);