回调函数,顾名思义,也就是等该函数执行完了,会回去调用我们传进去的函数。
创新互联建站自2013年起,是专业互联网技术服务公司,拥有项目做网站、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元泉山做网站,已为上家服务,为泉山各地企业和个人服务,联系电话:13518219792
用到回调函数的地方有不少,像我见过的:SQLite中的一个函数,sqlite_exec函数名有没有记错我没什么印象了。待这个函数执行完毕后,会去调用我传进去的一个函数,一般回调函数都是有自己的参数列表格式的,再利用这个格式从回调函数中获取到我们需要的一些值。
从功能上来说 普通函数也是可以的
但在比较大的程序设计中 会对很多功能模块进行封装
比如 上层一个模块
底层一个模块
同时规定,上层可以调用底层的函数,但是底层不可以调用上层函数。
这时就需要使用回调函数。
通过上层调用底层的注册回调借口,传入回调指针。
实现底层通知上层的作用。
另外 回调函数的一个好处是,可以通过回调函数,调用不同接口。
比如接收数据,不同数据需要不同的解析函数。
但是接收数据的流程是相同的
这样 使用回调函数,在接收数据的时候就可以不用判断,而是自动使用不同的解析函数。
总之 使用回调函数,可以降低耦合,实现多样性。
1、回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现,在C++、Python、ECMAScript等更现代的编程语言中还可以使用仿函数或匿名函数。
2、回调函数的使用可以大大提升编程的效率,这使得它在现代编程中被非常多地使用。同时,有一些需求必须要使用回调函数来实现。
3、最著名的回调函数调用有C/C++标准库stdlib.h/cstdlib中的快速排序函数qsort和二分查找函数bsearch中都会要求的一个与strcmp类似的参数,用于设置数据的比较方法。
回调函数 就是上层调用 设置下去
底层通过函数指针调用上层函数
多文件中才有用 单文件可以模拟
比如
#include stdio.h
typedef void (*pFuncCb) (int);//定义回调函数。
void callback1(int a)
{
printf("callback function1 is called and parameter = %d\n", a);//打印1
}
void callback2(int a)
{
printf("callback function2 is called and parameter = %d\n", a);//打印2
}
pFuncCb callback_function;
void lowerFunc(int n)
{
int i;
for(i = n; i n+10; i ++)
if(callback_function) callback_function(i);
}
int main()
{
callback_function = callback1;
lowerFunc(1);// 会打印十次 打印1, 1到10
callback_function =NULL;
lowerFunc(10);//没有打印。
callback_function = callback2;
lowerFunc(100);// 会打印十次 打印2, 100到110
return 0;
}