当前位置: 首页 > news >正文

回调函数20251125

1.回调函数:

  • 将函数作为指针传参给其他函数使用,实现解耦作用,将各个功能分开。
    Pasted image 20251125221724
  • 举例,不含参数的回调函数:
#include"stdio.h" 
int Callback()   
{  
    printf("Hello, this is Callback ");  
    return 0;  
}
int Handle(int (*callback)())
{printf("Entering Handle Function. ");  
    Callback();  
    printf("Leaving Handle Function. ");
}
int main()  
{  
    printf("Entering Main Function. ");  
    Handle(Callback);   
    printf("Leaving Main Function. ");  
    return 0;  
}
  • 有参数的回调函数
#include"stdio.h" 
int Callback(int x)   
{  
    printf("Hello, this is Callback,this param is %d",x);  
    return 0;  
}
//callback是指针名,可以随便起,如*p
int Handle(int y,int *(callback)(int))
{printf("Entering Handle Function. ");  
    callback(y);  
    printf("Leaving Handle Function. ");
}
int main()  
{  
    printf("Entering Main Function. ");  
    Handle(10,Callback);   
    printf("Leaving Main Function. ");  
    return 0;  
}
// 定义一个函数指针类型:FuncPtr(指向“接收int、返回int”的函数)
typedef int (*FuncPtr)(int);// 用类型别名改写Handle函数的参数
int Handle(int y, FuncPtr callback) {  // 等价于 int Handle(int y, int (*callback)(int))printf("Entering Handle Function. ");  callback(y);  // 直接用类型别名调用,更清晰printf("Leaving Handle Function. ");
}
  • 函数指针的核心是「指针指向的函数必须有固定的参数列表返回值类型」,声明语法的通用格式是:返回值类型 (*指针变量名)(参数类型列表);
    • 括号 (*指针变量名) 是关键:强制让 * 先与变量名结合,表明这是一个「指针」,而不是返回值为指针的函数。
  • 后面的 (参数类型列表) 表明:这个指针只能指向「参数类型匹配」的函数
  • 最前面的 返回值类型 表明:这个指针只能指向「返回值类型匹配」的函数
http://www.jsqmd.com/news/50925/

相关文章:

  • 类模板的实现
  • rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充
  • 2025年中国前五大轮胎品牌:专业测评与选购指南
  • lru_cache装饰器的缓存清除机制原理
  • 2025年中国前十大轮胎品牌:最新官方榜单深度解析
  • 网格图分治模型
  • Python内置的lru_cache装饰器实现缓存教程
  • 2025年轮胎品牌推荐:权威TOP10全球品牌综合排名
  • 详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!
  • 北京墙体彩绘公司推荐香鲸艺术坊,行业排名遥遥领先!
  • 虚拟科学峰会推动技术交流创新
  • java---gradle配置国内镜像
  • 2025年11月南京装修公司综合实力排行榜(品牌智鉴榜推荐)
  • 揭开Claude Opus 4.5神秘面纱
  • Image图片组件基础加载与属性设置
  • 2025年新能源汽车轮胎推荐:独家负载与静音测评报告
  • 11月25日日记
  • CF370A-Rook, Bishop and King
  • 实用指南:基于“开源AI智能名片链动2+1模式S2B2C商城小程序”的会员制培养策略研究
  • 2025年越野轮胎推荐:十大专业品牌最新全地形解析
  • 11月25日
  • Switch大气层20-整合包1-9-0测试版
  • 2025年家用轿车轮胎推荐:权威综合排名与选购指南
  • 基于.net6的一款开源的低代码、权限、工作流、动态接口平台-系统安装篇
  • macOS开启自带的TFTP Server
  • AT_arc178_c [ARC178C] Sum of Abs 2
  • 几道树上计数问题
  • 接入层傻瓜机引起的VLAN间环路
  • 实用指南:线性回归中梯度下降的最终结果是否为全局最小解
  • 2025年安全的轮胎推荐:专业制动测评与选购攻略