1.定義
回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作爲參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。(回調函數區別於普通函數在於它的調用方式。只有當某個函數(更確切的說是函數的指針)被作爲參數,被另一個函數調用時,它纔是回調函數。)
2.回調的意義
(1)回調機制提供了很大的靈活性。在回調中,利用某種方式,把回調函數像參數一樣傳入中間函數,程序可以在運行時,通過登記不同的回調函數,來決定、改變中間函數的行爲。
(2)因爲可以把調用者與被調用者分開,調用者不用去關心誰是被調用者。它只需知道存在一個具有特定原型和限制條件的被調用函數。簡而言之,回調函數就是允許用戶把需要調用的方法的指針作爲參數傳遞給一個函數,以便該函數在處理相似事件的時候可以靈活的使用不同的方法。
eg:比如存在LCD_Display();OLED_Display()……等多個顯示,我們統一編寫一箇中間函數,Display_Change(void (*ptr)());使用時就可以根據所傳入的參數不同而調用不同的回調函數。
2.簡要說明
#include<stdio.h>
//定義回調函數
void test(void)
{
printf("回調函數\n");
}
//定義實現回調函數的"調用函數"
void dy_fun(void (*ptr(void)))
{
//(*ptr)(); //通過回調函數指針
ptr(); //通過命名方式
}
//實現函數回調
void main(void)
{
dy_fun(test);
}
參考:
1.初識回調函數