回调函数和普通函数区别(网上搜到)

本文通过一个典型的排序算法案例,深入浅出地介绍了回调函数的概念及其应用场景。重点解释了回调函数如何在用户提供的函数与库函数之间建立联系,以及同步与异步回调的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找到的比较容易理解的回答,存一下回调函数与普通函数没有本质上的区别,只是概念上的区别。 回调函数的典型应用可以描述如下: 用户A写一段程序,处理某一事务,例如数据排序。他对排序算法有相当研究,因此,他使用了一种高效的排序算法。为了让不懂排序算法的人也能够使用这个高效的算法,他决定为其他用户提供一个函数接口。但是,既然要排序,就必须比较2个对象的大小,而算法编写者对客户的对象没有任何知识,因此,他需要客户提供一个比较对象大小的函数,如, int comp(const void* obj1, const void* obj2) 当他需要比较大小时,就调用客户提供的这个函数,根据函数返回值确定大小关系。而客户提供的这个比较函数,就可以称作回调(callback)函数,即:本来是我(客户)调用你(算法库),而你会过头来又调用我的函数(比较函数),回调函数由此得名。 回调函数的概念随处可见,其应用并不局限于系统调用。一般来讲,如果某个处理流程具有确定性,而流程中某个具体的处理环节需要根据实际情况具体处理,就可以将这个流程固定下来,在需要具体处理的地方“安插”适当的回调函数接口。 从调用时机来看,回调函数可以分为同步、异步2类:上面提到的排序的例子是一个同步回调的例子。 异步回调等同于中断注册的概念,客户首先就某一个感兴趣的事件向服务器注册一个处理函数,服务器在发生客户感兴趣的事件是,就调用客户注册的处理函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值