函式與指標分析
阿新 • • 發佈:2018-12-12
-
函式型別
- C語言中的函式有自己特定的型別 - 函式的型別由返回值,引數型別和引數個數共同決定 int add(int i, int j)的型別為 int(int, int) -C語言中通過typedef為函式型別重新命名 typedef type name(parameter list) -例如: typedef int f(int, int); typedef void p(int);
-
函式指標
- 函式指標用於指向一個函式 - 函式名是執行函式的入口地址 - 可通過函式型別定義函式指標:FuncType* pointer; - 也可以直接定義: type(*pointer)(parameter list); -pointer為函式指標變數名 -type為所指函式的返回值型別 -parameter list為所指函式的引數型別列表
程式碼示例:(函式指標的使用)
#include<stdio.h> typedef int(FUNC)(int); int test(int i) { return i * i; } void f() { printf("Call f()...\n"); } int main() { FUNC* pt = test; void(*pf)() = f; printf("pf = %p\n", pf); printf("f = %p\n", f); printf("&f = %p\n", &f); pf(); (*pf)(); printf("Function pointer call:%d\n", pt(2)); return 0; }
編譯結果:
-
回撥函式
- 回撥函式是利用函式指標實現的一種呼叫機制 - 回撥機制原理 - 呼叫者不知道具體事件發生時需要呼叫的具體函式 - 被調函式不知道何時被呼叫, 只知道需要完成的任務 - 當具體事件發生時, 呼叫者通過函式指標呼叫具體函式 - 回撥機制中的呼叫者和被調函式互不依賴
-
C語言中的函式都有特定的型別
-
可以使用函式型別定義函式指標
-
函式指標是實現回撥機制的關鍵技術
-
通過函式指標可以C程式中實現固定的地址跳轉