C/C++ 谈回调函数

一个函数FA通过指针调用另外一个函数FB,其中FB就是回调函数,使用回调函数的一个意义就是解耦

函数指针

在理解“回调函数”之前,首先讨论下函数指针的概念。
(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指针。

回调函数使用场景

就是使用者自己定义一个函数,使用者自己实现这个函数的程序内容,然后把这个函数作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。

一般在两个相对独立的模块中,模块MA想让模块MB完成事件X。
举例模块MB为相机采图程序,而模块MA是想读取相机图像做处理。这时可以在相机模块MB中定义一个调用回调函数的函数FA,FA接收一个函数地址,输出一张图像,但是具体对这张图像处理啥就由回调函数FB实现。这就起到解耦效果,相机模块MB不用知道其他模块需要啥样的图像,它只管拿到一张原图,交给回调函数处理。
个人拙见,并未完全解释回调函数的其中的奥秘,如读者发现有不对的地方请指出。

以上参考博客
https://www.cnblogs.com/danshui/archive/2012/01/02/2310114.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值