C语言的本质(17)——回调函数

回调函数是指通过函数指针将函数地址传递给另一个函数,由后者在特定条件下调用。这种方式允许调用者与被调用者解耦,仅需关注函数接口。示例展示了如何使用回调函数实现重复执行和寻找最大值的功能,同时提到了异步回调在信号处理、线程和GUI编程中的应用。
摘要由CSDN通过智能技术生成

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

因为可以把调用者与被调用者(实现者)分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型和限制条件的被调用函数。换句话讲,回调函数就是允许用户把需要调用的方法的指针作为参数传递给一个函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法。

下面是一个回调函数的示例:

 

void func( void (*f)(void *), void *p );

 

其调用者与实现者之间的协议如下:

调用者

实现者

1、提供一个回调函数,再提供一个准备传给回调函数的参数。

2、把回调函数传给参数f,把准备传给回调函数的参数按void *类型传给参数p

1、在适当的时候根据调用者传来的函数指针f调用回调函数,将调用者传来的参数p转交给回调函数,即调用f(p);

 

下面是一个简单的例子。实现了一个repeat_three_times函数,可以把调用者传来的任何回调函数连续执行三次。

 


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值