一、回呼函數的概念
回呼函數是一個程式員不能顯式調用的函數;通過將回呼函數的地址傳給調用者從而實現調用。
二兩個demo
----------------------------------------------------------------------------------------------------------------
void caller(void(*ptr)())
{
ptr(); /* 調用ptr指向的函數 */
}
void func();
int main()
{
p = func;
caller(p); /* 傳遞函數地址到caller ,caller調用指標p指向的函數*/
}
如果賦了不同的值給p(不同函數地址),那麼調用者將調用不同地址的函數。賦值可以發生在運行時,這樣使你能實現動態綁定。
-------------------------------------------------------------------------------------------------------------
typedef int(*CallBack)(char *p) ; // 聲明CallBack 類型的函數指標
int A(char *p); // 回呼函數
B(CallBack lpCall,char *pProvide)
{
........... // B 的自己實現功能語句
lpCall(PpProvide); // 藉助回調完成的功能 ,也就是A函數來處理的。
........... // B 的自己實現功能語句
}
// -------------- 使用例子 -------------
main()
{
char *p = "hello!";
B(A, p);
}
參考:
http://www.vckbase.com/document/viewdoc/?id=195
http://gethelp.devx.com/techtips/cpp_pro/10min/10min0300.asp
http://tech.ccidnet.com/art/3839/20060314/476731_1.html