C的回调函数--曾经难为情
最早接触回调函数应该是学sqlite数据库时接触到的(记得是这个sqlite_exec()有用到它),但是那个时候没认真去理解,一直都觉得回调函数很神秘。现在天天又听到什么叫回调函数的,想想真的太难为情了,还是不懂。找个时间学了下,原来认真理解下还是很OK的。
#include<stdio.h>
int CallBack_1(int a,int b,int (*ptr)(int a,int b)) //方法一:通过指针函数【回调函数格式为:int (*ptr)(int a,int b)】
{
return (*ptr)(a,b);
}
typedef int (*CallbackFun)(int a,int b); //自定义回调函数类型,方便命名
int CallBack_2(int a,int b,CallbackFun pCallBack) //方法二:通过命名方式
{
return pCallBack(a,b);
}
int add(int a,int b) //符合回调函数的参数格式[int (*ptr)(int a,int b)]
{
return a+b;
}
int main()
{
int a=24,b=1;
int c;
c=CallBack_1(a,b,add);
printf("This is the first method:c=%d\n",c);
a=2011;
b=1;
c=CallBack_2(a,b,add);
printf("This is the second method:c=%d\n",c);
return 0;
}
结果如下:
摘自 Ivan@_linux专栏
补充:软件开发 , C++ ,