回调函数

回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。这一设计允许了底层代码调用在高层定义的子程序。回调的形式因程序设计语言的不同而不同。(C, C++ and Pascal允许将函数指针作为参数传递给其它函数。其它语言,例如JavaScript,Python,Perl和PHP,允许简单的将函数名作为参数传递。Objective-C中允许利用@selector关键字传递SEL类型的函数名。)

回调允许函数调用者在运行时调整原始函数的行为。因为可以把调用者与被调用者分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型和限制条件的被调用函数。

例子:

#include <stdio.h>
void printWelcome(int len) // 被调用者
{
       printf("欢迎欢迎 -- %d/n", len);
}
void printGoodbye(int len) // 被调用者
{
       printf("送客送客 -- %d/n", len);
}
void callback(int times, void (* print)(int)) // 回调函数,传入被调者函数指针(地址),然后回调函数对被调用函数进行操作
       int i;
       for (i = 0; i < times; ++i) //具体实现方法
       {
              print(i); //被调用者
       }
       printf("/n我不知道你是迎客还是送客!/n/n");
}
void main(void)
{
       callback(10, printWelcome);//调用者调用回调函数
       callback(10, printGoodbye);
       printWelcome(5);
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值