0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解回调函数的概念及使用步骤

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-05-26 15:20 次阅读

回调函数的概念:

回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现,在C++Python、ECMAScript等更现代的编程语言中还可以使用仿函数或匿名函数。

回调函数的使用可以大大提升编程的效率,这使得它在现代编程中被非常多地使用。同时,有一些需求必须要使用回调函数来实现。

最著名的回调函数调用有C/C++标准库stdlib.h/cstdlib中的快速排序函数qsort和二分查找函数bsearch中都会要求的一个与strcmp类似的参数,用于设置数据的比较方法。

回调函数的使用步骤:

⑴定义一个回调函数;

⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;

⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

回调函数中没有参数的使用方法,如下代码:

#include

int Callback_1() // Callback Function 1
{
    printf("Hello, this is Callback_1 ");
    return 0;
}

int Callback_2() // Callback Function 2
{
    printf("Hello, this is Callback_2 ");
    return 0;
}

int Callback_3() // Callback Function 3
{
    printf("Hello, this is Callback_3 ");
    return 0;
}

int Handle(int (*Callback)())  //定义回调函数体
{
    printf("Entering Handle Function. ");
    Callback();
    printf("Leaving Handle Function. ");
}

int main()
{
    printf("Entering Main Function. ");
    Handle(Callback_1);
    Handle(Callback_2);
    Handle(Callback_3);
    printf("Leaving Main Function. ");
    return 0;
}

d当我们回调的函数带参数时,需要做如下的调整:

#include

int Callback_1(int x) // Callback Function 1
{
    printf("Hello, this is Callback_1: x = %d ", x);
    return 0;
}

int Callback_2(int x) // Callback Function 2
{
    printf("Hello, this is Callback_2: x = %d ", x);
    return 0;
}

int Callback_3(int x) // Callback Function 3
{
    printf("Hello, this is Callback_3: x = %d ", x);
    return 0;
}

int Handle(int y, int (*Callback)(int))   //注意差异
{
    printf("Entering Handle Function. ");
    Callback(y);
    printf("Leaving Handle Function. ");
}

int main()
{
    int a = 2;
    int b = 4;
    int c = 6;
    printf("Entering Main Function. ");
    Handle(a, Callback_1);
    Handle(b, Callback_2);
    Handle(c, Callback_3);
    printf("Leaving Main Function. ");
    return 0;
}
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128390
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33062
  • 回调函数
    +关注

    关注

    0

    文章

    87

    浏览量

    11455
收藏 人收藏

    评论

    相关推荐

    函数

    C++内编写的DLL中有很多事件都是通过函数来反馈,LABVIEW如何可以调用呢?
    发表于 11-06 15:36

    函数小结

    调用对应的函数)的这个过程就是函数回调过程,被函数称为
    发表于 07-05 01:51

    浅析函数

    调用于层间协作,上层将本层函数安装在下层,这个函数就是,而下层在一定条件下触发回,例如作
    发表于 08-06 06:10

    函数指针、指针函数函数总结分享!

    看蓝牙协议栈的时候遇到了函数,之前就没有用过,函数指针、函数指针数组、
    发表于 10-15 19:23

    C 语言函数详解

    C 语言函数详解什么是函数
    发表于 04-08 10:36

    C语言函数是什么

    什么是函数?为什么要使用回函数?怎么使用回函数
    发表于 12-28 07:11

    函数和中断处理函数的关系

    结论看完本文,大家可能对函数和中断处理函数的关系产生了疑问。其实是这样的,单片机每完成接收一个字符,就会进入一次中断处理函数,而在中断处
    发表于 08-13 08:34

    ajax方法名使用什么事件,ajax的函数和匿名函数 精选资料分享

    1.什么是js函数一. 函数的作用js代码会至上而下一条线执行下去,但是有时候我们需要等
    发表于 09-01 07:15

    函数的作用是什么?怎么使用回函数

    什么是js函数函数的作用是什么?怎么使用回
    发表于 11-01 06:10

    Msp函数是什么意思?

    Msp函数是什么意思?
    发表于 11-30 06:57

    如何确定中断函数函数

    STM32编程时,如何确定中断函数函数名换句话说,就是如何找到中断
    发表于 12-06 06:21

    函数在程序开发中有何作用呢

    函数在程序开发中是一个非常重要的概念,所谓的其实就是不同程序模块之间的接口和约定,是软件
    发表于 03-01 07:13

    C/C++函数

    引入了对象的概念,可以使用类的成员和静态函数作为函数。class ProgramA { public:void FunA1()
    发表于 02-11 15:25

    边缘融合技术概念及实现步骤

    边缘融合技术概念及实现步骤   边缘融合的应用来源于模拟仿真/立体影院系统。追求亮丽的超大画面,纯真的色彩,高分辨率的显
    发表于 03-24 11:54 869次阅读

    智能电网的概念及通信技术详解

    智能电网的概念及通信技术详解
    发表于 11-21 20:41 963次阅读