回调函数就是一个通过函数指针调用的函数。当一个函数作为参数传递时,在另一个函数中可以通过形参的指针直接访问该函数。
通过代码演示回调的使用以及回调函数的形参内容是如何传递的。
#include <stdlib.h>
#include <stdio.h>
typedef void (*callBack)(int *a,int *b); //通过宏定义函数指针
void funcA(int *tmp1,int *tmp2) //回调函数
{
printf("tmp1:%d tmp2:%d\n",*tmp1,*tmp2);
}
void call(callBack func) //形参为回调函数,只要是原型与callBack定义的函数一致
{
int m = 10;
int n = 20;
func(&m,&n); //调用
}
int main()
{
call(funcA);
return 0;
}
上面的代码回调函数的形参为指针,我们也可以通过普通变量进行传递:
#include <stdlib.h>
#include <stdio.h>
typedef void (*callBack)(int a,int b);
void funcA(int tmp1,int tmp2)
{
printf("tmp1:%d tmp2:%d\n",tmp1,tmp2);
}
void call(callBack func)
{
int m = 10;
int n = 20;
func(m,n);
}
int main()
{
call(funcA);
return 0;
}