C语言-函数指针

函数指针

函数指针是指向函数的指针变量。
函数指针本身首先应该是指针变量,只不过该指针变量指向函数。

C在编译的时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他变量一样。

用途: 调用函数和做函数的参数

函数指针的使用

其中void代表函数的返回值,fun_p:函数指针的名称,char* msg, char* title: 函数的参数列表。

void msg(char* msg,char* title){
    //do something
}

void main(){
    /*函数指针
    void代表函数的返回值
    fun_p:函数指针的名称
    char* msg, char* title: 函数的参数列表
    */
    void(*fun_p)(char* msg, char* title) = msg;  
    fun_p("消息内容", "标题");
    getchar();
}  

实例

定义了一个函数指针,可传入不同的函数,从而实现加饭、减法,亦可进行扩展,实现乘法、除法等,知道确保函数的参数和返回值相同即可。

int add(int a, int b){
    return a + b;
}

int minus(int a, int b){
    return a - b;
}  

//此函数需要传递一个函数指针参数
//可以执行不同的函数
void msg2(int(*func_p2)(int a,int b),int m,int n){
    //执行一段代码
    m++;
    //执行回调函数
    int r = func_p2(m, n);
    printf("%d\n", r);
}  

void main(){
    msg2(add, 10, 20); //加法
    msg2(minus, 50, 10); //减法
}  

打印结果

31
41

猜你喜欢

转载自blog.csdn.net/ethanco/article/details/78671789