当前位置:首页 > 公众号精选 > strongerHuang
[导读]其实回调函数和普通函数没有本质的区别。首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:voidA(){...func();...}想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:voidfunc(){blablabla;}这很简单吧,现在...



其实回调函数和普通函数没有本质的区别。首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:
void A() { ... func(); ...} 想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:
void func() { blablabla;} 这很简单吧,现在假设你编写的这段代码无比之牛逼,全世界的程序员都无比疯狂的想引入到自己的项目中,这时你会把A函数编写成一个库供全世界的码农使用。但此时所有人都发现一个问题,那就是他们都想在A函数中的某个特定点上执行一段自己的代码,作为这个库的创作者你可能会这样实现:
void A() { ... // 特定点 if (张三) { funcA(); } else if (李四) { funcB(); } ...} 假设全世界有一千万码农,那你是不是要有一千万个if else。。。想想这样的代码就很刺激有没有!更好的办法是什么呢?把函数也当做变量!你可以这样定义A函数:
void A(func f) { ... f(); ...} 任何一个码农在调用你的A函数时传入一个函数变量,A函数在合适的时机调用你传入的函数变量,从而节省了一千万行代码。为了让这个过程更加难懂一些,这个函数变量起了一个无比难懂的称呼:回调函数。现在你应该明白了回调函数是怎么一回事了吧,相比回调函数来说我更愿意将其看做函数变量。以上就是回调函数的基本原理,有想看更详细版本的请参考这里。以上仅仅是回调函数的一种用途,回调函数在基于事件驱动编程以及异步编程时更是必备的,关于事件驱动编程你可以参考这里,GUI编程的同学对此肯定很熟悉。希望这里的讲解对大家理解回调函数有所帮助。


------------ END ------------



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

什么是回调函数?`even.py`#回调函数1#生成一个2k形式的偶数defdouble(x):returnx*2#回调函数2#生成一个4k形式的偶数defquadruple(x):returnx*4`callback_...

关键字: 回调函数

其实回调函数和普通函数没有本质的区别。首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:voidA(){...func();...}想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:...

关键字: 回调函数

01什么是回调函数?回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A...

关键字: 回调函数

以前写过一篇关于回调函数的文章C语言函数指针之回调函数,今天又安排了一篇。

关键字: 回调函数 C语言

回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?

关键字: C语言 嵌入式 回调函数

STM32Cube HAL出来六七年了,还是有很多初学者没有适应,今天就分享一个读者问到的关于中断处理的问题。

关键字: 中断处理 回调函数

上一篇博文的地址: http://blog.csdn.NET/morixinguan/article/details/65494239 这节,我们来看看函数指针与回调函数在Linux内核中的应用。 从上节我们了解到,函数...

关键字: C语言 回调函数

今天我们要搞明白的一个概念叫回调函数。 什么是回调函数? 百度的权威解释如下: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这...

关键字: C语言 回调函数

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

关键字: C语言 回调函数
关闭
关闭