回调函数是利用函数指针实现的一直调用机制。
回调函数机制原理:
1>调用者不知道具体事件发生的时候需要调动的具体函数。
2>被调函数不知道啥时候被调用,只知道被调用后完成的任务。
3>当具体事件发生时,调用者通过函数指针调用具体函数。
注意;回调机制把调用者和调用函数分开,互不干扰。
例如;
#include <stdio.h>
typedef int(*FUNCTION)(int);
int g(int n, FUNCTION f)
{
int i = 0;
int ret = 0;
for(i=1; i<=n; i++)
{
ret += i*f(i);
}
return ret;
}
int f1(int x)
{
return x + 1;
}
int f2(int x)
{
return 2*x - 1;
}
int f3(int x)
{
return -x;
}
int main()
{
printf("x * f1(x): %d\n", g(3, f1)); //g(3, f1)这种调用方式也叫做注册
printf("x * f2(x): %d\n", g(3, f2));
printf("x * f3(x): %d\n", g(3, f3));
}
打印结果:
20
22
-14
这个例子用来理解回调函数,有很好的帮助,相信大家一定看得懂,当然如果有不懂的地方,可以留言,我会尽我所能帮助你理解。