Posted on 2006-11-02 22:58
neter 閱讀(192)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
程序設(shè)計(jì)
一、回調(diào)函數(shù)的概念
??? 回調(diào)函數(shù)是一個(gè)程序員不能顯式調(diào)用的函數(shù);通過(guò)將回調(diào)函數(shù)的地址傳給調(diào)用者從而實(shí)現(xiàn)調(diào)用。
二兩個(gè)demo
----------------------------------------------------------------------------------------------------------------
void caller(void(*ptr)())
{
ptr(); /* 調(diào)用ptr指向的函數(shù) */
}
void func();
int main()
{
p = func;
caller(p);??? /* 傳遞函數(shù)地址到caller ,caller調(diào)用指針p指向的函數(shù)*/
}
?如果賦了不同的值給p(不同函數(shù)地址),那么調(diào)用者將調(diào)用不同地址的函數(shù)。賦值可以發(fā)生在運(yùn)行時(shí),這樣使你能實(shí)現(xiàn)動(dòng)態(tài)綁定。
-------------------------------------------------------------------------------------------------------------
typedef int(*CallBack)(char *p) ; // 聲明CallBack 類型的函數(shù)指針
int A(char *p); // 回調(diào)函數(shù)
B(CallBack lpCall,char *pProvide)
{
........... // B 的自己實(shí)現(xiàn)功能語(yǔ)句
lpCall(PpProvide); // 借助回調(diào)完成的功能 ,也就是A函數(shù)來(lái)處理的。
........... // B 的自己實(shí)現(xiàn)功能語(yǔ)句
}
// -------------- 使用例子 -------------
main()
{
char *p = "hello!";
B(A, p);
}