程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 函數指針、回調函數、系統調用區別,回調函數系統調用

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

編輯:關於C語言

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


函數指針、回調函數、系統調用區別
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    --> 系統調用號--內核函數入口  --> 實現功能 --> 返回調用結果

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved