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

函数指针——回调函数

回调函数

在 C 语言中,回调函数(Callback Function)是一种特殊的函数,它可以作为参数传递给另一个函数,并在特定事件发生或条件满足时被调用。这种机制允许我们在不修改主函数代码的情况下,通过传入不同的回调函数来改变程序的行为,增强了代码的灵活性和可扩展性。

回调函数的实现依赖于函数指针,以下是一个简单的示例:

#include <stdio.h>// 回调函数的原型
typedef void (*Callback)(int);// 执行回调的函数
void process(int data, Callback callback) {printf("Processing data: %d\n", data);// 调用回调函数callback(data);
}// 回调函数1:将数据翻倍
void doubleData(int num) {printf("Doubled data: %d\n", num * 2);
}// 回调函数2:将数据平方
void squareData(int num) {printf("Squared data: %d\n", num * num);
}int main() {int data = 5;// 使用不同的回调函数printf("First processing:\n");process(data, doubleData);printf("\nSecond processing:\n");process(data, squareData);return 0;
}

在这个例子中:

  1. 首先定义了一个函数指针类型 Callback,它指向一个接受 int 参数且无返回值的函数。

  2. process 函数接受两个参数:一个 int 类型的数据和一个 Callback 类型的函数指针。在 process 函数内部,会调用传入的回调函数。

  3. doubleDatasquareData 是两个符合 Callback 类型的函数,它们将作为回调函数使用。

  4. main 函数中,我们调用 process 函数并传入不同的回调函数,从而实现了对相同数据的不同处理方式。

回调函数在 C 语言中有着广泛的应用,例如:

  • 事件处理系统

  • 排序算法(如 qsort 函数)

  • 异步操作

  • 信号处理

通过回调函数,我们可以实现类似于面向对象编程中的 "策略模式",使代码更加模块化和可维护。

http://www.dtcms.com/a/311430.html

相关文章:

  • 文件同步神器-rsync命令讲解
  • ESP32- 项目应用1 智能手表之功能补全 #5
  • UDP通信中BIND端口号的作用解析,LOCALPORT的关系解析
  • 代码随想录刷题Day23
  • verilog的学习
  • 高效游戏状态管理:使用双模式位运算与数学运算
  • 从基础功能到自主决策, Agent 开发进阶路怎么走?
  • 技巧|SwanLab记录ROC曲线攻略
  • VueX进阶Pinia
  • go idea goland debug 报错 no debug info found
  • 从递归到动态规划-解码方法
  • Json Jsoncpp
  • 深入 Go 底层原理(十四):timer 的实现与高性能定时器
  • python JSONPath 表达式生成器
  • 淘宝获取商品SKU详情API接口操作指南
  • 交互 Codeforces Round 1040 Interactive RBS
  • 开发指南128-基础类-BaseDAO
  • 力扣面试150题--回文数
  • ABP VNext + NATS JetStream:高性能事件流处理
  • FPGA kernel 仿真器调试环境搭建
  • 分类任务当中常见指标 F1分数、recall、准确率分别是什么含义
  • 「iOS」————SideTable
  • 基于Dockerfile 部署一个 Flask 应用
  • WAIC引爆AI,智元机器人收购上纬新材,Geek+上市,157起融资撑起热度|2025年7月人工智能投融资观察 · 极新月报
  • 【传奇开心果系列】Flet框架流式输出和实时滚动页面的智能聊天机器人自定义模板
  • github在界面创建tag
  • 性能测试-性能测试中的经典面试题二
  • 超级人工智能+无人机操控系统,振兴乡村经济的加速器,(申请专利应用),严禁抄袭!
  • spring-ai-alibaba 学习(十九)——graph之条件边、并行节点、子图节点
  • linux编译基础知识-库文件标准路径