C語言 回調函數 callback - C語言零基礎入門教程


目錄

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.回調函數原理

你到商店買東西,剛好你要的東西沒有貨,於是你在店員那里留下了你的電話,過了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。

在這個例子里,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,店里后來有貨了叫做 觸發回調事件,店員給你打電話叫做 調用回調函數,你到店里去取貨叫做響應回調事件

二.回調函數簡介

在講解 C 語言回調函數之前,我們需要對前面的函數指針指針函數做簡單的解釋:

1.函數指針

函數指針,其本質是一個指針,指向的是一個函數的地址。

基本聲明形式:返回數據類型 + (*函數名) + (變量類型 1,…);

//返回int類型的函數指針
int (*fun) (int);

2.指針函數

指針函數,即返回指針的函數,其本質是一個函數,而該函數的返回值是一個指針。

基本聲明形式:返回數據類型 + * + 函數名 + (變量類型 1,…);

//返回int類型指針的指針函數
int* fun(int x,int y);

3.回調函數解釋

回調函數其實就是一個通過函數指針調用的函數!

假如你把 A 函數的指針當作參數傳給 B 函數,然后在 B 函數中通過 A 函數傳進來的這個指針調用 A 函數,那么這就是回調機制。

A 函數就是回調函數,而通常情況下,A 函數是系統在符合你設定條件的情況下會自動執行。

三.回調函數實戰

舉個例子:你現在需要寫一個視頻播放器項目,當視頻播放結束后通知用戶當前視頻已經播放完成!

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 回調函數 callback
//@Time:2021/06/24 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string>

typedef  int (*callBackFunc)(char* name);

int playBegin(char* name)
{
    printf("視頻開始解碼,即將出現畫面....\n");
    return 1;
}
int playEnd(char* name)
{
    printf("視頻播放結束....\n");
    return 1;
}
int play(callBackFunc fn, char* name)
{
    return fn(name);
}
int main()
{
   char pName[1024] = "色即是空";
   //視頻播放開始....
   play(playBegin,pName);//playBegin函數指針作為參數傳遞
   //視頻播放中....
   //視頻播放結束....
   play(playEnd,pName);//playEnd函數指針作為參數傳遞
   return 0;
}
/*
輸出:
視頻開始解碼,即將出現畫面....
視頻播放結束....
*/

四.回調函數使用總結

1.使用typedef聲明一個函數指針;

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 回調函數 callback
//@Time:2021/06/24 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

//沒有參數的回調函數
typedef  int (*callBackFunc)();

//含有參數的回調函數,回調函數參數可以是一個或者多個
typedef  int (*callBackFunc)(int x);
typedef  int (*callBackFunc)(int x, int y, int z);

2.使用 C 語言實現一個和函數指針返回值類型/函數參數都一樣的函數(函數名字任意取);

3.將實現的 C 語言函數作為參數傳遞(實際上就是傳遞的函數指針);

4.滿足特定的情況下,調用回調函數;

五.猜你喜歡

  1. C 語言邏輯運算符
  2. C 語言三目運算符
  3. C 語言逗號表達式
  4. C 語言 sizeof 和 strlen 函數區別
  5. C 語言 strcpy 和 strcpy_s 函數區別
  6. C 語言 memcpy 和 memcpy_s 區別
  7. C 語言 數組定義和使用
  8. C 語言 數組遍歷
  9. C 語言 數組下標越界
  10. C 語言 數組內存溢出
  11. C 語言 數組下標越界和內存溢出區別
  12. C 語言 二維數組定義和使用
  13. C 語言 二維數組行數和列數計算
  14. C 語言 指針聲明和定義
  15. C 語言 指針 p++ / p–
  16. C 語言 p++/§++/_(p++)/_p++
  17. C 語言 使用指針遍歷數組
  18. C 語言 指針和數組區別
  19. C 語言 數組指針
  20. C 語言 指針數組
  21. C 語言 指針數組和數組指針區別
  22. C 語言 空指針 NULL
  23. C 語言 void 指針
  24. C 語言 野指針
  25. C 語言 函數值傳遞和址傳遞
  26. C 語言 函數缺省參數
  27. C 語言 函數不定長參數
  28. C 語言 函數指針
  29. C 語言 指針函數
  30. C 語言 回調函數 callback

未經允許不得轉載:猿說編程 » C 語言 回調函數 callback

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM