欧美日韩在线第一页-欧美日韩在线观看精品-欧美日韩在线观看一区二区-欧美日韩在线免费看-欧美日韩在线视频不卡一区二区三区

編程代碼
新聞詳情

一文讀懂回調函數

發布時間:2020-09-05 14:50:00 最后更新:2020-11-23 14:35:51 瀏覽次數:3563

1 什么是回調函數?

首先什么是“回調”呢?

我的理解是:把一段可執行的代碼像參數傳遞那樣傳給其他代碼,而這段代碼會在某個時刻被調用執行,這就叫做回調。

如果代碼立即被執行就稱為同步回調,如果過后再執行,則稱之為異步回調。

回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。

回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用于對該事件或條件進行響應。

2 為什么要用回調函數?

因為可以把調用者與被調用者分開,所以調用者不關心誰是被調用者。它只需知道存在一個具有特定原型和限制條件的被調用函數。

簡而言之,回調函數就是允許用戶把需要調用的方法的指針作為參數傳遞給一個函數,以便該函數在處理相似事件的時候可以靈活的使用不同的方法。

回調似乎只是函數間的調用,和普通函數調用沒啥區別。

但仔細看,可以發現兩者之間的一個關鍵的不同:在回調中,主程序把回調函數像參數一樣傳入庫函數。

這樣一來,只要我們改變傳進庫函數的參數,就可以實現不同的功能,這樣有沒有覺得很靈活?并且當庫函數很復雜或者不可見的時候利用回調函數就顯得十分優秀。

3 怎么使用回調函數?

如上述代碼:可以看到,Handle()函數里面的參數是一個指針,在main()函數里調用Handle()函數的時候,給它傳入了函數Callback_1()/Callback_2()/Callback_3()的函數名,這時候的函數名就是對應函數的指針,也就是說,回調函數其實就是函數指針的一種用法。

4 回調函數實例(很有用)

一個GPRS模塊聯網的小項目,使用過的同學大概知道2G、4G、NB等模塊要想實現無線聯網功能都需要經歷模塊上電初始化、注冊網絡、查詢網絡信息質量、連接服務器等步驟,這里的的例子就是,利用一個狀態機函數(根據不同狀態依次調用不同實現方法的函數),通過回調函數的方式依次調用不同的函數,實現模塊聯網功能,如下:

所以,如果有人想做個NB模塊聯網項目,可以copy上面的框架,只需要修改回調函數內部的具體實現,或者增加、減少回調函數,就可以很簡潔快速的實現模塊聯網。

推薦閱讀

C/C++函數指針與指針函數

C語言指針詳解

在線客服 雙翌客服
客服電話
  • 0755-23712116
  • 13310869691
主站蜘蛛池模板: 国产二区三区毛片| 来个黄色网址| 啪一啪在线| 国产午夜精品一区二区三区嫩草| 亚洲国产日韩欧美在线a乱码| 九九热网| 日韩精品欧美亚洲高清有无| 男女免费爽爽爽在线视频| 国产在线精品一区免费香蕉 | 成人午夜免费观看| 妞干网最新视频| 亚洲精品aⅴ中文字幕乱码| 一级毛片在线免费视频| 国产精品欧美日韩精品| 欧美高清一区二区三| 亚洲香蕉久久综合网| 一级做a爱片久久毛片| 日韩欧美三级在线| 在线看片h站| 免费中文字幕| 欧洲美女大片免费播放器视频| 国产精品久久永久免费| 黄色一级片免费网站| www小视频| 国产精品入口在线看麻豆| 久久久久国产午夜| 91福利国产在线在线播放| 久久嫩模| 日本精品一区二区三区在线观看| 欧美中文字幕一区二区三区| 91麻豆网| 国产精品69白浆在线观看免费| 久久精品国产99久久无毒不卡| 欧美日韩视频二区三区| 婷婷亚洲激情| 亚洲精品国产综合99久久一区| a级毛片免费观看在线播放| 久久久精品中文字幕| 日韩www视频| 日韩欧美国内| 日韩欧美国产一区二区三区|