再议回调函数

一、回调函数的概念
    回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。

二两个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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值