一、回调函数的概念
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。
二两个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
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。
二两个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