0
点赞
收藏
分享

微信扫一扫

5.3指针进阶

IT程序员 2022-05-03 阅读 56

先从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}                      //函数指针数组存放多个同类型

用处:

//计算器 加减乘数

 

 

 

 ...

这样不合适不如:

 

举报

相关推荐

0 条评论