回調函數理解
目前我想用一種生活場景來描述一下回調函數
我是一個送外賣的,而你是一個吃客,我把我的電話號碼給你,你餓了的時候給我打電話,告訴我吃什麼送到哪裏,我在半個小時內送到,至於我怎麼來送,跑啊還是電瓶車哪怕開直升機,你不關心,當然至於你什麼時候想吃,爲啥想吃這個我也不關心,我只管按時送到。
這裏我送外賣的本領就是被回調的函數,你通過我的電話號調用我,完成我所能幹的事兒->送外賣,呵。
以下這段代碼可以直接在 DEV C++ 上直接運行
// 深刻理解回調函數
// Call Back Function demo .
#include "stdio.h"
//* 回調函數1.數據類型對應 int.
int CallBack1(void* A)
{
int a =0;
a = *(int*)A;
printf("我是回調函數 CallBack1\r\n");
printf("a = %d\r\n",a);
return 0;
}
//* 回調函數1.數據類型對應 char.
int CallBack2(void* A)
{
char a;
a = *(char*)A;
printf("我是回調函數 CallBack2\r\n");
printf("b = %c\r\n",a);
return 0;
}
//* 定義兩個函數指針.
int (*CallBackFuntion)(void* A) = &CallBack1;
int (*CallBackFuntion2)(void* A) = &CallBack2;
//* 用這個函數來傳入對應的參數,並調用回調函數.
void Test(void * A,int (*pCallBackFuntion)(void*))
{
printf("先乾點兒別的\r\n");
printf("回調\r\n");
pCallBackFuntion(A);
printf("回調完畢\r\n");
}
//* Test 測試回調過程.
int main(void)
{
int a =3;
char b = 'b';
Test((void*)&a,CallBackFuntion); // 通過指針.
printf("\r\n");
Test((void*)&b,&CallBack2); // 通過取址符.
}
代碼的運行結果:
先乾點兒別的
回調
我是回調函數 CallBack1
a = 3
我是回調函數 CallBack2
b = b
回調完畢