Posted on 2006-11-02 22:58
neter 閱讀(186)
評論(0) 編輯 收藏 引用 所屬分類:
程序設計
一、回調函數的概念
??? 回調函數是一個程序員不能顯式調用的函數;通過將回調函數的地址傳給調用者從而實現調用。
二兩個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);
}