回调函数

来源:互联网 发布:c语言的基础语法 编辑:程序博客网 时间:2024/05/16 16:19
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,这就是回调函数。回调函数不是由该函数的实现方法的事件或条件发生直接调用,而是在特定时由另外一方调用的,用于对该事件或条件进行响应。
回调函数实现的机制:
1、定义一个回调函数;
2、提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;
3、当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理;
使用回调函数原因:
因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。


Example:C语言回调函数事例如下
#include "stdafx.h"


typedef int(*CallBackFun)(char *p);
int Afun(char*p)
{
printf("Afun回调打印字符%s!\n",p);
return 0;
}
int Cfun(char *p)
{
printf("Cfun回调打印:%s,Nice to meet you!\n",p);
return 0;
}
int call(CallBackFun pCallBack,char *p)
{
printf("call直接打印出字符%s!\n",p);
pCallBack(p);
return 0;
}
int call2(char *p,int (*ptr)(char *p))
{
printf("=================\n",p);
(*ptr)(p);
return 0;
}
int call3(char *p,CallBackFun pCallBack)
{
printf("------------------\n",p);
pCallBack(p);
return 0;
}


int main(int argc, _TCHAR* argv[])
{
char *p = "hello";


call(Afun, p);
call(Cfun, p);


call2(p, Afun);
call2(p, Cfun);


call3(p, Afun);
call3(p, Cfun);


return 0;
}