回调函数

来源:互联网 发布:js单例和实际化 编辑:程序博客网 时间:2024/06/09 19:47

在了解回调函数之前,你应该先去了解函数指针!!!


先看一个回调函数的例子:

#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);
}


3 0