本篇文章介绍c语言中的函数指针以及函数指针的应用。
函数指针:指向函数的指针。
函数在编译时分配地址。
&函数名 和 函数名代表的意义相同,都表示函数的地址。
int (* pf)(int,int);
int:表示函数指针指向的函数的返回值类型为int
pf:表示函数指针变量名
(int,int):表示函数指针指向的函数的参数类型
pf的类型:int(*)(int,int)
//写法一
int ret1 = (*pf)(2,3); //通过对函数指针进行解引用
//写法二
int ret2 = pf(2,,3); //函数指针调用函数的简写形式
下面两断代码来自《c陷阱与缺陷》
代码一
(* (void(*)()) 0)();
上面这行代码表示一次函数调用
void(*)() 表示函数指针类型
( void(*)() )0 表示将整型值0强制转换为函数指针类型
(* (void(*)()) 0)() 表示调用地址为0的函数
代码二
void(* signal_func(int, void(*)(int)) )(int);
上面代码表示一次函数声明
函数名 signal_func
参数类型int和void(*)(int)
返回值类型 void(*)(int)
将代码进行简写
typedef void(*SIGNALTYPE)(int); //将void(*)(int)函数指针类型重命名为SIGNALTYPE
SIGNALTYPE signal_func(int, SIGNALTYPE);