1 函数指针的定义
函数指针就是指向函数的指针,其值是函数的地址。函数指针的类型由其指向函数返回值和形参决定。
定义函数指针时,使用(*指针名)代替函数名即可。例如,定义一个全局函数ShowInfo()
int ShowInfo(int a)
{
printf("%d\n", a);
return a;
}
在main()函数中定义该函数的指针
int (*pf)(int);
pf = ShowInfo;
此时,pf中保存的即为ShowInfo函数的地址。在程序中添加一个全局变量
int b = 1;
在main()函数中可以输出全局函数和全局变量的地址,如图1所示。
printf("%p\n", fp);
printf("%p\n", &b);
图1 全局函数和全局变量的地址
从图1可以看出,全局函数ShowInfo是被保存在堆中的。
2 函数指针的使用
可以通过指向函数的指针来调用该函数。
fp(2);
也可以像变量指针一样,通过解引用的方式调用该函数。
(*fp)(2);
以上两种调用函数的方式是等价的。