先从0分解
void(*)()是函数指针类型
(void(*)()0)就是把0强制装换成函数指针类型 0就成为此类型的函数的地址了
*(void(*)()0)就是调动0的地址 再加一个()用来传参变成(*(void(*)()0)(传参)
而该函数无参返回类型是void
、
signal是函数名后面两个函数参数
第一个参数类型是int 第二个是函数指针void(*)(int)返回类型void指向一个参数为int
此时可以看成void(*)(int)
signal函数的返回类型也是一个函数指针 该函数指针也是返回类型void 指向一个参数int
signal是一个函数的声明
该函数可以写成
不过语法不支持只是为了方便理解所以写成把int放在了后面
typedef //对类型进重定义
typedef void(*pfun_t)(int) //对void(*)(int)的函数指针类型重命名为pfun_t
即pfun_t等价于void(*)(int)指针类型
则
可以写成
函数指针数组(存放函数指针的数组)
整形指针int*
整形指针数组int*arr[5]
int(*pf1)(int,int)=Add;
int(*pf2)(int,int)=Sun;两个函数指针
int(*pfArr[2])(int,int) ={Add,Sub} //函数指针数组存放多个同类型的
用处:
//计算器 加减乘数
...
这样不合适不如: