回调函数
1. 什么是回调函数?
回调(callback),就是一种利用函数指针进行函数调用的过程。如果把一个函数f1的地址/函数指针作为参数传递给另一个函数f2,当这个指针被用为调用它所指向的函数(f1)时,我们就说f2是回调函数。
其实回调函数就是函数指针的一种用法。
2. 为什么要用回调函数?
将策略与实现相分离,也就是设计模式中的“将接口与实现分离原则”。这样,可以把调用者和被调用者分离,调用者不必关心谁是被调用者,只需知道存在这样一个具有某种特定原型和某些限制条件(如返回值类型)的被调用函数即可。
3. 一个简单的demo
#include <stdio.h>
void print_hello(int len)
{
printf("Hello...\n");
}
void print_bye(int len)
{
printf("Goodbye...\n");
}
void my_callback(int times, void(* print_something)(int))
{
int i;
for (i = 0; i < times; i++)
print_something(i);
}
int main()
{
my_callback(10, print_hello);
my_callback(11, print_bye);
return 0;
}