C語言:回調函數

剛剛學習了下回調函數,對於理論有了初步的瞭解,寫了個簡單的demo驗證了下,還沒具體在項目中應用,所以理解可能還不到位,暫時先簡單記錄一下,以後碰到實際項目,理解更深刻了再回頭補充。

下面從幾個方面闡述自己的簡單理解:

一、回調函數是什麼?(回調函數概念)

二、回調函數能幹啥?(應用場景)

三、回調函數如何實現?(代碼實現)

一、回調函數是什麼?(回調函數概念)

三句話描述:(後面代碼小節會根據該三句話的描述來實現回調函數代碼)

  • 1、首先,實現基本功能業務函數,定義成某一種固定格式的函數。如:int Add(int x, int y) { … }

  • 2、其次,定義一個通用的“my庫”函數,其參數包含某種類型的函數指針。這個my庫函數就叫做回調函數。

  • 3、最後,通過調用“my庫”函數(回調函數),並通過他的參數(函數指針)調用自己實現的功能。

備註:其實回調函數的本質就是對函數指針的使用。

二、回調函數能幹啥?(應用場景)

待補充,當前大概瞭解不同模塊之間的功能互相調用啥的。

三、回調函數如何實現?(代碼實現)

最重要的代碼章節!!根據上述步驟來實現,分爲三步:

3.1 實現基本業務功能函數

/* 函數功能實現 */
int Add(int x, int y) {
    printf("回調打印Add\r\n");
    return ((x) + (y));
}

int Sub(int x, int y) {
    printf("回調打印Sub\r\n");
    return ((x) - (y));
}

3.2 定義回調函數(參數指向基本業務功能函數)

備註:方法一和方法二是等價的,都可以採用。

方法一、

/* 重命名函數指針類型 */
typedef int (*pFunc)(int a, int b);

/* 定義回調函數 */
int CallBackFunc(int x, int y, pFunc func) {
    return func(x, y);
}

方法二、

/* 定義回調函數,通過該函數傳參其他功能函數指針,從而調用對應功能 */
int CallBackFunc(int x, int y, int (*pFunc)(int a, int b)) {
    return (*pFunc)(x, y);
}

3.3 使用回調函數

/* 主函數 */
int main(int argc, char argv[]) {
    int a = 1;
    int b = 2;

    CallBackFunc(a, b, &Add);
    CallBackFunc(a, b, &Sub);

    return 0;
}

四、結果展示

在這裏插入圖片描述

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