所谓函数指针,本质是一个指针,是指向函数的指针,即通过一个指针就可以调用一个函数。下面我们来举例为大家讲解,类似的,基本语法我们知道一个指针可以指向它同类型的变量,函数指针也是,函数指针所定义类型和原函数的类型要一样,包括参数个数、类型,返回值类型,这样才能一致,才能赋值,让这个函数指针指向原函数。
比如有一个函数:
1 2 3 4 5 6 | int Max( int x, int y) { if (x>y) return x; return y; } |
这是一个找两个数最大值函数,如果我们想通过一个函数指针来指向它,那么我们需要这么定义一个函数指针:
1 | int (*p)( int x, int y); //定义函数指针 |
这个指针叫p,它就是一个函数指针,即可以指向一个参数有两个整型变量,返回值也为整型的函数,那很明显和前面定义的Max函数类型一样,那么就可以做指向的赋值了,如下:
1 | p=Max; //使p指向原函数 |
接下来如果我们要使用这个Max函数,用指针的话可以这样调用:
1 | p(3,5); //通过函数指针调用 |
即可调用函数swap,并将3和5两个实参传了进去,将会运行得到5的结果。
大家可以上机实验完成!
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程