一个函数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