在了解回调函数之前,你应该先去了解函数指针!!!
先看一个回调函数的例子:
#include <stdio.h>
#include <iostream>
void Call(void (*fp)(int) ,int x) //Call为调用者,fp为指向回调函数的函数指针
{
fp(x);
}
void CallBackFun1(int x) //CallBackFun1为回调函数
{
printf("回调函数CallBackFun1中输出:%d\n",x);
}
void CallBackFun2(int x) //CallBackFun2为回调函数
{
printf("回调函数CallBackFun2中输出:%d\n",x);
}
int main()
{
Call(CallBackFun1,10);
Call(CallBackFun2,20);
system("pause");
}
输出结果为:
假设CallBackFun是回调函数,Call是调用者,Call函数参数中有一个参数是指向CallBackFun的函数指针,即回调CallBackFun,同时Call函数另外的参数传递给CallBackFun作为参数。
那么:Call调用CallBackFun,CallBackFun又利用了Call给的参数。
CallBackFun就是回调函数,Call就是调用者。
-----------------------------------------------------END------------------------------------------------------------------------
void Call(void (*fp)(int),int x)
{
fp(x);
}
等价于:
typedef void (*CallBackFun)(int);
void Call(CallBackFun fp,int x)
{
fp(x);
}