君子性非异也,善假于物也。

如有恒,何须三更起,半夜眠;最怕莫,三天打鱼两天晒网,竹篮打水一场空!
posts - 31, comments - 23, trackbacks - 0, articles - 30
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

回调函数

Posted on 2006-11-02 22:58 neter 阅读(170) 评论(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);
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理