函數指針、回調函數、系統調用區別

来源:http://www.cnblogs.com/mydmp/archive/2016/08/06/5743273.html
-Advertisement-
Play Games

函數指針、回調函數、系統調用區別1.函數指針 2.回調函數 體現: 1.函數名作為參數傳遞給調用函數。 2.將調用者和被調函數分開,回調函數實現具體的功能,調用者無需關註實現的具體細節。3.系統調用系統調用 --> (0x80)軟中斷(系統調用表) --> 內核函數 --> 返回到系統調用層 rea ...


函數指針、回調函數、系統調用區別
1.函數指針

 1 int add(int a, int b)
 2 {
 3 return a+b;
 4 }
 5 
 6 int (*fp)(int,int);
 7 
 8 int main()
 9 {
10 int c;
11 fp = add; //有指針賦值操作,靜態綁定
12 c = fp(2,4);
13 printf("c = %d\n",c);
14 return 0;
15 }

2.回調函數

 1 int add(int a, int b) //回調函數
 2 {
 3 return a+b;
 4 }
 5 
 6 int fun(int a, int b, void(*fp)())//中間函數,動態綁定,與傳遞的函數名有關
 7 {
 8 return fp(a,b);
 9 }
10 
11 int main()
12 {
13 int c;
14 c = fun(2,4);
15 printf("c = %d\n",c);
16 return 0;
17 }

體現: 1.函數名作為參數傳遞給調用函數。

    2.將調用者和被調函數分開,回調函數實現具體的功能,調用者無需關註實現的具體細節。

3.系統調用
系統調用 --> (0x80)軟中斷(系統調用表) --> 內核函數 --> 返回到系統調用層

  read    --> 系統調用號--內核函數入口  --> 實現功能 --> 返回調用結果

實現方式: 通過中斷實現,使用寄存器傳參

進程經歷了從用戶態到內核態的切換,處理完成後再恢復到用戶態繼續完成系統調用的過程。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.課前雞湯 2.函數 ...
  • 錯誤情況概述: 啟動應用之後,微信調用 相機拍照 等介面是可以正常使用的, 但是過了一段時間(2個小時左右--token/jsapi_ticket的過期時間),微信調用相機拍照的功能失效,啟用debug模式: //步驟三:通過config介面註入許可權驗證配置 wx.config({ debug: t ...
  • 棧是Vector的一個子類,它實現了一個標準的後進先出的棧。 堆棧只定義了預設構造函數,用來創建一個空棧。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。 棧常用的五個方法: boolean empty() :測試堆棧是否為空。 object peek():查看棧頂元素,但是不移 ...
  • 枚舉(Enumeration)介面雖然它本身不屬於數據結構,但它在其他數據結構的範疇里應用很廣。 枚舉(The Enumeration)介面定義了一種從數據結構中取回連續元素的方式。 例如,枚舉定義了一個叫nextElement 的方法,該方法用來得到一個包含多元素的數據結構的下一個元素。 枚舉定義 ...
  • 一、SpringMVC 使用 ModelAndView 來處理返回值問題。 1.ModelAndView 官方描述: Holder for both Model and View in the web MVC framework.Note that these are entirely distin ...
  • 1. VirtualBox的安裝 參考常規安裝方式即可。 VirtualBox 4.3.14 for Windows hosts:http://download.virtualbox.org/virtualbox/4.3.14/VirtualBox-4.3.14-95030-Win.exe 2. U ...
  • 在windows2008伺服器上安裝wampserver3.0.4集成環境,預設卻是無法遠程訪問,如果要遠程訪問需要修改apache的配置文件httpd.conf,修改如下: <Directory "D:/wamp64/www/"> # # Possible values for the Optio ...
  • 註釋規範 1、 類註釋 在每個類前面必須加上類註釋,註釋模板如下: 2、 屬性註釋 在每個屬性前面必須加上屬性註釋,註釋模板如下: 3、 方法註釋 在每個方法前面必須加上方法註釋,註釋模板如下: 4、 構造方法註釋 在每個構造方法前面必須加上註釋,註釋模板如下: 5、 方法內部註釋 在方法內部使用單 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...