回調函數定義

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

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

回調函數意義:
把調用者與被調用者分開,調用者不關心誰是被調用者,簡而言之,回調函數就是允許用戶把需要調用的方法的指針作爲參數傳遞給一個函數,以便該函數在處理相似事件的時候可以靈活的使用不同的方法

說明一點:
C語言使用較多,在C++語言中virtual函數(虛函數)實現

如何使用:
typedef int(*CallBack)(char *p);這個太難理解了,怎麼理解呢?
typedef int a
這個我就知道是什麼意思,就是把a代替int,
請問
typedef int(*CallBack)(char *p),這個又是什麼意思呢?
typedef int(*CallBack)(char *p);
變量名:CallBack
1、*CallBack:CallBack是一個指針
2、(*CallBack)():指向一個函數
3、(CallBack)(char *p):這個函數有一個參數,類型爲char
4、int(*CallBack)(char *p):這個函數有一個返回值,類型爲int

最終:CallBack是一個指針,指向具有一個char*類型參數,且返回一個int型數據的函數
前面有個typedef,所以現在CallBack是這種類型的別名
int func(char *p){

}

CallBack my_callback1 = func;//OK
CallBack my_callback2 = &func;//OK

以上二者均可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章