函数指针:回调函数的底层逻辑

本文是本人个人的学习笔记,个人理解,仅供参考

函数指针:即指向函数的指针

              一般函数定义:类型(int float void) + 函数名 + ( 类型 变量 ,int date );

              函数指针定义:类型 (指针) (类型 变量,int date ) //无用变量名可省略,只写类型

如:void (*p) ( 类型 变量 ,int date)   int  (*adk)  (类型, int )

              函数指针赋值:指针=函数名                        如:p=jiajian //函数名

              函数指针调用:(指针) (类型 变量 ,int date )       如: (*p) ( )

          可以理解成:定义一个函数类型( int(**)(int a) )的*p,取代函数名。相当于p存放的是函数的地址,函数名作为首地址,于是定义一个函数类型的指针如:int(*p)(int a),再把函数地址给它p=函数名。函数的调用是:函数名(数据),我们函数指针仿照调用:(*p)(数据)。就只是把函数名带换成了(*p).

作用: 若函数原型一样,可以共用一个指针

          增加了代码可读性

例题:输入 1 ,求a,b最大值。输入 2 ,求a,b最小值。输入 3 ,求a,b和。

 调用函数声明:

调用函数内容

主函数

全部代码

#include <stdio.h>
#include <stdlib.h>
int GetMax (int date1,int date2);
int GetMin (int date1,int date2);
int GetSum (int date1,int date2);
//此处pfun指向GetMax,GetMin,应和pfun函数指针类型一致.相当于在一定义一个指针
int dateHanger(int a,int b, int (*cfun)(int,int) ){
	int result;
    result=(*cfun)(a,b);
    return result;
}

int main()
{
	int cmd,a=1,b=99;
    int result;
    int (*pfun)(int f,int);//定义函数指针,无用变量名可写可不写
    //输入 1 2 3
    printf("请输入cmd的值");
    scanf("%d",&cmd);
    //定义函数指针,根据cmd,赋予不同函数
    //可以随意替换函数
    switch(cmd){//赋值
		case 1:{pfun=GetMax;break;}
		case 2:{pfun=GetMin;break;}
        case 3:{pfun=GetSum;break;}
    }
    //调用函数指针
    result=dateHanger(a,b,pfun);  //result=(*pfun)(a,b); 
	
    //输出结果
    printf("处理后 %d\n",result);
	system("pause");
	return 0;
}
int GetMax (int date1,int date2){
	int Max;
    Max=(date1>date2?date1:date2);
	return Max;
}
int GetMin (int date1,int date2){
	int Min;
    Min=(date1<date2?date1:date2);
	return Min;
}
int GetSum (int date1,int date2){
	int Sum;
    Sum=date1+date2;
	return Sum;
}

输出结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值