「C與指針心得」22.函數指針-回調函數

本節重點講的函數指針中的回調函數。

回調函數

含義:

回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方法直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。


機制:

⑴定義一個回調函數;
⑵提供函數實現的一方在初始化的時候,將回調函數的函數指針註冊給調用者;
⑶當特定的事件或條件發生的時候,調用者使用函數指針調用回調函數對事件進行處理。


舉例:

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.函數指針-回調函數


分享到:


相關文章: