回调函数
来源:互联网 发布: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;
}
回调函数实现的机制:
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;
}
- .NET 回调函数
- 回调函数
- 回调函数
- 回调函数概念
- 回调函数
- 回调函数
- 回调函数
- 回调函数 相关
- delphi 回调函数
- 回调函数
- 回调函数
- 回调函数学习
- 回调函数
- 关于回调函数
- 透析回调函数
- 回调函数
- 什么是回调函数
- 回调函数
- NH里解决超过4000字符传参问题
- 一个MySQL的奇怪问题-----不知道算不算bug
- Oracle三种集合数据类型的比较
- db2&unix使用总结(二)
- Linux开机过程中修改启动级别
- 回调函数
- Linux无线网卡配置
- MySQL数据库dump,restore的时候的小细节
- VBA字符串处理函数1
- Flex4 flashVars 传值
- 怎么使用正则表达式表示汉字
- VBA字符串处理函数2
- db2&unix使用总结(三)
- Image图片缩小