回调函数
维基百科
先看一看维基百科的解释
回调函数或简称回调(callback),是计算机编程中对某一段可执行代码的引用,它被作为参数传递给另一段代码;预期这段代码将回调(执行)这个回调函数作为自己工作的一部分。这种执行可以是即时的,如在同步回调之中;也可以在后来的时间点上发生,如在异步回调之中。
编程语言以不同方式支持回调,经常将它们实现为子例程、lambda表达式、块或函数指针。
也就是说,将一段可执行代码以参数的形式传递给其他代码,这段可执行代码被其他代码调用被称为回调
如果代码被立即执行就是同步回调,一段时间后执行就是异步回调
那么为什么不使用函数调用的形式而是以参数的形式调用函数呢,这里就不得不提到一个概念:解耦
再程序结构设计中,使用函数调用的形式,代码与代码之间的关联性太强,一旦有所更改就牵一发而动全身,这就是代码和代码之间的耦合性,通过解耦的设计思路,将代码中的功能相互独立,提高程序运行的稳定性和效率
比如说,在函数F1中调用函数F2时传入函数F3的参数,可以实现通过不同的参数传入实现不同的函数功能,
#include<stdio.h>
int add_1(int x) {
printf("第%d次调用,通过传入add_1函数\n",x);
return 0;
}
int add_2(int x) {
printf("第%d次调用,通过传入add_2函数\n", x);
return 0;
}
int add_3(int x) {
printf("第%d次调用,通过传入add_3函数\n", x);
return 0;
}
int add(int y, int (*aa)(int)) {
printf("通过mian函数调用add()\n");
aa(y);
printf("调用结束\n");
return 0;
}
int main()
{
int x = 0;
add(x++, add_1);
add(x++, add_2);
add(x++, add_3);
return 0;
}
运行结果:
通过mian函数调用add()
第0次调用,通过传入add_1函数
调用结束
通过mian函数调用add()
第1次调用,通过传入add_2函数
调用结束
通过mian函数调用add()
第2次调用,通过传入add_3函数
调用结束