本節重點講的函數指針中的回調函數。
回調函數
含義:
回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方法直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
機制:
⑴定義一個回調函數;
⑵提供函數實現的一方在初始化的時候,將回調函數的函數指針註冊給調用者;
⑶當特定的事件或條件發生的時候,調用者使用函數指針調用回調函數對事件進行處理。
舉例:
1.我們在路上遇到一個好多年沒見到的朋友,要了朋友的手機好,跟他說我回去打給你
1)遇見朋友–主函數
2)我打電話給朋友,通過朋友的手機號,找到朋友–(回調)
2.寄快遞的情形
打電話給快遞員,告訴他我的地址(理解成回調函數的地址),快遞員在有空的時候根據這個地址來找到你取件。
1)打電話給快遞員,告訴他我的地址–主函數(我的地址–回調函數地址)
2)快遞員處理完其他事情後,通過這個地址(回調)來找到你取件,執行完回調裡面的內容。
示例:
/*回調函數*/
void * call_phone_number(int number )
{
printf("phone number = %d\n",number); /*通過號碼找到朋友*/
}
/*調用函數*/
void start_call( void *call_back(int number))
{
int phone_number = 12345;
call_back(phone_number);
}
int main(void)
{
start_call(call_phone_number);
return 0;
}
![「C與指針心得」22.函數指針-回調函數](http://p2.ttnews.xyz/loading.gif)
閱讀更多 大貓玩程序 的文章