来自维基百科的定义:在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
知乎用户“常溪玲”的回答太形象:你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
我的理解:回调函数的本质是函数指针的应用。
举个栗子:
MFC里面的SetTimer函数。
定义回调函数:
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
AfxMessageBox(_T("定时器测试"));
}
然后:
SetTimer(1,1000,TimerProc);//最后一个参数就是回调函数的指针。
这样,定时器每隔1秒就会“回来调用”该回调函数了。