回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作爲參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
之前在
#include <stdio.h>
typedef int(*mypoint)(int);
static int fun1(int num)
{
printf("打印fun\n");
return num;
}
static int fun2(int num)
{
printf("不打印fun\n");
return num;
}
void test_fun(mypoint p)
{
p(11);
}
void test(int com)
{
//int(*pfun)(int);
mypoint pfun;
if (com > 1)
{
pfun = &fun1;
test_fun(fun1);
}
else
{
pfun = fun2;
}
test_fun(pfun);
}
int main()
{
test(-1);
//test_fun(fun1);
//test_fun(fun2);
return 0;
}
因爲可以把調用者與被調用者分開,所以調用者不關心誰是被調用者。它只需知道存在一個具有特定原型和限制條件的被調用函數。簡而言之,回調函數就是允許用戶把需要調用的函數的指針作爲參數傳遞給一個函數,以便該函數在處理相似事件的時候可以靈活的使用不同的方法