最早接觸回調函數應該是學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專欄