所谓函数指针,本质是一个指针,是指向函数的指针,即通过一个指针就可以调用一个函数。下面我们来举例为大家讲解,类似的,基本语法我们知道一个指针可以指向它同类型的变量,函数指针也是,函数指针所定义类型和原函数的类型要一样,包括参数个数、类型,返回值类型,这样才能一致,才能赋值,让这个函数指针指向原函数。


比如有一个函数:

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;    
}


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)