回調函數理解

回調函數理解

目前我想用一種生活場景來描述一下回調函數

我是一個送外賣的,而你是一個吃客,我把我的電話號碼給你,你餓了的時候給我打電話,告訴我吃什麼送到哪裏,我在半個小時內送到,至於我怎麼來送,跑啊還是電瓶車哪怕開直升機,你不關心,當然至於你什麼時候想吃,爲啥想吃這個我也不關心,我只管按時送到。
這裏我送外賣的本領就是被回調的函數,你通過我的電話號調用我,完成我所能幹的事兒->送外賣,呵。

以下這段代碼可以直接在 DEV C++ 上直接運行

// 深刻理解回調函數 
// Call Back Function demo .
#include "stdio.h"

//* 回調函數1.數據類型對應 int. 
int CallBack1(void* A)
{
    int a =0;
    a = *(int*)A;
    printf("我是回調函數 CallBack1\r\n");
    printf("a = %d\r\n",a);
    return 0;   
}

//* 回調函數1.數據類型對應 char. 
int CallBack2(void* A)
{
    char a;
    a = *(char*)A;
    printf("我是回調函數 CallBack2\r\n");
    printf("b = %c\r\n",a);
    return 0;   
}

//* 定義兩個函數指針. 
int (*CallBackFuntion)(void* A) = &CallBack1;
int (*CallBackFuntion2)(void* A) = &CallBack2;

//* 用這個函數來傳入對應的參數,並調用回調函數. 
void Test(void * A,int (*pCallBackFuntion)(void*))
{
    printf("先乾點兒別的\r\n");
    printf("回調\r\n");
    pCallBackFuntion(A);
    printf("回調完畢\r\n");
}

//* Test 測試回調過程. 
int main(void)
{
    int a =3;
    char b = 'b';
    Test((void*)&a,CallBackFuntion);  // 通過指針. 
    printf("\r\n");
    Test((void*)&b,&CallBack2);       // 通過取址符. 
}




代碼的運行結果:

先乾點兒別的
回調
我是回調函數 CallBack1
a = 3
我是回調函數 CallBack2
b = b
回調完畢


有人這麼畫

這裏寫圖片描述

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