基本概念:
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
实现机制:
⑴定义一个回调
函数;
⑶当特定的事件或条件发生的时候,调用者使用
函数指针调用回调函数对事件进行处理。
回调函数用途:
想知道回调
函数在实际中有什么作用?先假设有这样一种情况:我们要编写一个库,它提供了某些
排序算法的实现(如
冒泡排序、
快速排序、
shell排序、shake排序等等),为了能让库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,能让库可用于多种
数据类型(int、float、string),此时,该怎么办呢?可以使用
函数指针,并进行回调。
回调可用于通知机制。例如,有时要在A程序中设置一个
计时器,每到一定时间,A程序会得到相应的通知,但通知机制的实现者对A程序一无所知。那么,就需一个具有特定原型的
函数指针进行回调,通知A程序事件已经发生。实际上,
API使用一个回调
函数SetTimer()来通知
计时器。如果没有提供回调
函数,它还会把一个消息发往程序的
消息队列。