函式指標陣列

2021-09-26 05:59:45 字數 1144 閱讀 1583

本質它是乙個陣列;

提乙個概念:圈複雜度

定義:圈複雜度用來衡量乙個模組判定結構的複雜程度,數量上表現為線性無關的路徑條數,即合理的預防錯誤所需測試的最少路徑條數。圈複雜度大說明程式**可能質量低且難於測試和維護,根據經驗,程式的可能錯誤和高的圈複雜度有著很大關係。

函式指標陣列可以有效降低圈複雜度。

函式指標陣列的作用:轉移表,表驅動。

舉個栗子:

我們先寫乙個計算器的簡單程式:

#define _crt_secure_no_warnings

#include#includeint add(int a, int b)

int sub(int a, int b)

int mul(int a, int b)

int divi(int a, int b)

int main()

else if (choice == 2)

else if (choice == 3)

else if (choice == 4)

else printf("輸入錯誤,請重新輸入\n"); //可以看到圈複雜度為5

system("pause");

return 0;

}

如果使用函式指標陣列:

#define _crt_secure_no_warnings

#include#includeint add(int a, int b)

int sub(int a, int b)

int mul(int a, int b)

int divi(int a, int b)

int main();

if (choice <= 0 || choice > 4)

printf("%d\n", arr[choice - 1](num1,num2));

system("pause");

return 0;

}

可以看到,圈複雜度為1,很輕易的就可以實現這個功能。

但是函式指標陣列有較大的侷限性,函式指標的型別,函式引數型別,函式引數的傳入順序,函式返回值之類都要一致,但這並不妨礙它成為乙個好用的工具,畢竟很多函式的引數都是一致的。

指標陣列 陣列指標 函式指標 函式指標陣列

陣列指標 指向陣列的指標,是乙個指標,其指向的型別是陣列 指標陣列 元素為指標的陣列,是乙個陣列,其中的元素為指標。例如 int a 5 這個是陣列指標。int a 5 這個是指標陣列。定義函式指標型別 int max int,int typedef int fun ptr int,int 申明變數...

指標陣列,陣列指標,指標函式,函式指標

int p 4 指標陣列。是個有4個元素的陣列,每個元素的是指向整型的指標。int p 4 陣列指標。它是乙個指標,指向有4個整型元素的陣列。int func void 指標函式。無參函式,返回整型指標。int func void 表示函式指標,可以指向無參,且返回值為整型指標的函式。右左規則 因為...

陣列指標,指標陣列,函式指標,指標函式

陣列指標,指標陣列,函式指標,指標函式 指標 變數,存放變數的位址。例 int ptr,ptr是乙個指向整形變數的指標 陣列 例 int a 10 定義了乙個具有10個元素的一維陣列,其中陣列的每個元素是乙個int型別。陣列指標 陣列首元素位址的指標,即是指向陣列的指標。例 int ptr 10 c...