欢迎光临
我们一直在努力

一句话说透C语言回调函数

你定规则,我来执行;你写动作,我来调用。

1. 回调函数是什么?

回调函数,说白了就是:你把一个函数的地址(指针)传给另一个函数,让那个函数在合适的时机回头调用你传过去的这个函数。

关键点就两个:

  • 你写的(函数)
  • 别人调(在某个函数内部通过函数指针调用)

2. 先看普通调用

#include <stdio.h>

int add(int a, int b) {
return a + b;
}

int main() {
int result = add(3, 5); // 主调函数主动调用 add
printf("%d\\n", result);
return 0;
}

这是“正向调用”——main 主动去调用 add。

3. 再看回调调用

#include <stdio.h>

// 这是回调函数(你写的)
int add(int a, int b) {
return a + b;
}

// 这是通用计算函数(它接收一个函数指针,回头调用它)
int calculate(int x, int y, int (*callback)(int, int)) {
// 在这里“回调”你传进来的函数
return callback(x, y);
}

int main() {
int result = calculate(3, 5, add); // 把 add 的地址传给 calculate
printf("%d\\n", result);
return 0;
}

calculate 并不关心具体怎么算,它只负责在内部调用你给它的那个函数。你给什么,它就怎么算——这就是回调的威力。

4. 为什么需要回调?

  • 解耦:调用者不需要知道具体实现,只需约定好参数和返回值(函数签名)。
  • 灵活:同一个 calculate,你可以传入 add、sub、mul……实现不同行为。
  • 事件驱动:比如定时器、按键响应、网络数据到达时,系统回头调用你的处理函数。

5. 一个更生活的例子

你点外卖,告诉外卖员“到了打电话给我”。
“打电话”这个动作就是回调函数——你定义了“接到电话后怎么做”(比如下楼取餐),外卖平台在“送达”这个事件发生时,回头调用你的电话(回调)。

6. C 语言实现要点

  • 用 函数指针 作为参数。
  • 回调函数的 类型必须匹配(参数个数、类型、返回值)。
  • 可以配合 void* 传递自定义数据(实现类似闭包的效果)。

void register_callback(void (*cb)(int), void* user_data) {
// 存储 cb 和 user_data,等事件触发时调用
}

7. 总结

概念一句话解释
回调函数 你写的,但交给别人去调用的函数
函数指针 用来“记住”回调函数的地址
回调机制 把“做什么”和“什么时候做”分离

回调函数 = 你把“动作”打包,交给框架/库,让它们在合适的时候帮你执行。

初学只要记住:函数名就是地址,把地址传过去,别人就能回头调用你。 这就是回调。


如果你觉得有帮助,欢迎点赞、收藏、评论,让更多人看到!

赞(0)
未经允许不得转载:171主机测评 » 一句话说透C语言回调函数
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址