C语言函数指针

目录

函数指针概念

函数指针用法

函数指针数组

回调函数


函数指针概念

    在C/C++中,指向函数的指针变量称为函数指针,函数指针用于存放函数的地址,作为函数执行时入口地址。函数名代表函数的入口地址。

    函数指针变量定义的一般形式如下

<返回数据类型>  (*函数指针名称) (函数参数列表);

本质上和定义函数的首部相同,但用指针的形式来定义,函数指针名需要有括号,否则变成了一个返回值是指针的函数声明。 

函数指针用法

#include <stdio.h>

typedef int (*psum)(int a, int b);//通过typedef定义函数指针类型别名

int sum1(int a, int b)
{
    printf("%s, result : %d\n", __FUNCTION__, a+b);
    return (a + b);
}

int sum2(int a, int b)
{
    int sum = a + b;
    printf("%s, result : %d\n", __FUNCTION__, sum);
    return sum;
}

int main()
{
    psum psum_v1 = sum1;//通过函数指针类型定义变量并赋值
    int (*psum_v2)(int a, int b) =  sum2;//直接定义函数指针变量并赋值

    int test1 = 10, test2 = 15;

    psum_v1(test1, test2);
    psum_v2(test1, test2);

    return 0;
}

运行效果如下

 

 函数指针数组


#include <stdio.h>

typedef int (*psum)(int a, int b);//通过typedef定义函数指针类型别名

int sum1(int a, int b)
{
    printf("%s, result : %d\n", __FUNCTION__, a + b);
    return (a + b);
}

int sum2(int a, int b)
{
    int sum = a + b;
    printf("%s, result : %d\n", __FUNCTION__, sum);
    return sum;
}

//function pointer array1
psum fp_arr1[] = { sum1 , sum2 };//通过函数指针类型定义函数指针数组

int main()
{
    //function pointer array2
    int (*fp_arr2[])(int a, int b) = {sum1 , sum2};//直接定义函数指针变量并赋值

    int test1 = 10, test2 = 15;
    int i;

    for (i = 0; i < 2; i++)
    {
        printf("function pointer array1:\n");
        fp_arr1[i](test1, test2);
        printf("function pointer array2:\n");
        fp_arr2[i](test1, test2);
    }

    

    return 0;
}

运行效果

回调函数

下节讲述如何通过函数指针实现回调函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值