所谓函数指针,本质是一个指针,是指向函数的指针,即通过一个指针就可以调用一个函数。下面我们来举例为大家讲解,类似的,基本语法我们知道一个指针可以指向它同类型的变量,函数指针也是,函数指针所定义类型和原函数的类型要一样,包括参数个数、类型,返回值类型,这样才能一致,才能赋值,让这个函数指针指向原函数。
比如有一个函数:
int Max(int x,int y) { if(x>y) return x; return y; }
这是一个找两个数最大值函数,如果我们想通过一个函数指针来指向它,那么我们需要这么定义一个函数指针:
int (*p)(int x,int y); //定义函数指针
这个指针叫p,它就是一个函数指针,即可以指向一个参数有两个整型变量,返回值也为整型的函数,那很明显和前面定义的Max函数类型一样,那么就可以做指向的赋值了,如下:
p=Max; //使p指向原函数
接下来如果我们要使用这个Max函数,用指针的话可以这样调用:
p(3,5);//通过函数指针调用
即可调用函数swap,并将3和5两个实参传了进去,将会运行得到5的结果。
大家可以上机实验完成!
完整代码如下:
#include<stdio.h> int Max(int x,int y) { if(x>y) return x; return y; } int main() { int a; int (*p)(int x,int y); p=Max; a=p(3,5); printf("%d\n",a); return 0; }
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程