当前位置: 首页 > 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.rkmt.cn/news/60811.html

相关文章:

  • 网格图分治模型
  • Python内置的lru_cache装饰器实现缓存教程
  • 北京墙体彩绘公司推荐香鲸艺术坊,行业排名遥遥领先!
  • java---gradle配置国内镜像
  • 11月25日日记
  • 几道树上计数问题
  • 接入层傻瓜机引起的VLAN间环路
  • Spring IOC 源码学习一 基本姿势
  • 可持久化01trie板子
  • 2025年11月25日
  • 2025年节油的轮胎推荐:官方TOP10低滚阻榜单揭秘
  • 实用指南:云计算学习(三)——子网划分
  • 基于 Vue3 及TypeScript 项目后的总结 - 详解
  • 慢就是快 用在生活中
  • 计你太美
  • 2025年大众帕萨特更换轮胎推荐:官方权威指南深度解析
  • 2025-11-25 ZYZ28-NOIP模拟赛-Round9 hetao1733837的record
  • 详细介绍:Python之aedev-setup-project包语法、参数和实际应用案例
  • leetcode238. 除自身以外数组的乘积 未解决
  • python environment settings
  • 有限元技巧核心原理与学习路径:从一维基础到多维拓展(七步流程)
  • 实用指南:面向高并发场景的舆情处置技术实践——基于字节探索Infoseek的架构拆解
  • sg 多堆的取石子游戏
  • Day48(18)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management
  • 日总结 31
  • 102302114_比山布努尔兰_作业3
  • 第四十八篇
  • Django 用户认证流程详解:从原理到搭建
  • i.MX 6ULL复位管脚
  • [豪の算法奇妙冒险] 代码随想录算法训练营第六天 | 242-有效的字母异位词、349-两个数组的交集、202-快乐数、1-两数之和