打印
[开发资料]

什么是回调函数?

[复制链接]
525|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


我们先来看看百度百科是如何定义回调函数的:

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

这段话比较长,也比较绕口。下面我通过一幅图来说明什么是回调:


假设我们要使用一个排序函数来对数组进行排序,那么在主程序(Main program)中,我们先通过库,选择一个库排序函数(Library function)。但排序算法有很多,有冒泡排序,选择排序,快速排序,归并排序。同时,我们也可能需要对特殊的对象进行排序,比如特定的结构体等。库函数会根据我们的需要选择一种排序算法,然后调用实现该算法的函数来完成排序工作。这个被调用的排序函数就是回调函数(Callback function)。

结合这幅图和上面对回调函数的解释,我们可以发现,要实现回调函数,最关键的一点就是要将函数的指针传递给一个函数(上图中是库函数),然后这个函数就可以通过这个指针来调用回调函数了。注意,回调函数并不是C语言特有的,几乎任何语言都有回调函数。在C语言中,我们通过使用函数指针来实现回调函数。

我的理解是:把一段可执行的代码像参数传递那样传给其他代码,而这段代码会在某个时刻被调用执行,这就叫做回调。
如果代码立即被执行就称为同步回调,如果过后再执行,则称之为异步回调。

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

使用特权

评论回复
沙发
szt1993| | 2024-4-10 12:25 | 只看该作者
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

使用特权

评论回复
板凳
中国龙芯CDX| | 2024-4-10 16:35 | 只看该作者
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

使用特权

评论回复
地板
小夏天的大西瓜| | 2024-4-11 12:21 | 只看该作者
回调函数是调用默认的函数接口,进行指针函数调用

使用特权

评论回复
5
jf101| | 2024-4-14 15:29 | 只看该作者
回调函数是函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数

使用特权

评论回复
6
小小蚂蚁举千斤| | 2024-4-15 09:46 | 只看该作者
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数其实就是回调函数

使用特权

评论回复
7
OKAKAKO| | 2024-4-19 18:49 | 只看该作者
回调函数就是一个通过函数指针调用的函数。使用方便高效

使用特权

评论回复
8
星辰大海不退缩| | 2024-4-21 11:40 | 只看该作者
回调函数并不是C语言特有的,几乎任何语言都有回调函数。在C语言中,我们通过使用函数指针来实现回调函数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

248

主题

1917

帖子

3

粉丝