如果乙個指標指向某個函式,那麼它便是函式指標。有時候我們如果需要在乙個迴圈中,每次呼叫不同的函式(這些函式的返回值和引數相同,函式名不同,實現不同),那麼就可以使用函式指標陣列來使**更加簡練和易讀。那麼,怎樣定義函式指標陣列呢?
在定義函式指標陣列之前,需要首先知道什麼是函式指標。函式指標的定義形象點來說,就是用乙個指標變數代替原函式中的函式名位置。
原函式
int add(int a,int b)
函式指標定義(不需要加入&取值符號,因為函式標識實際上就是乙個位址)
int (*p)(int ,int)
p=add
呼叫(直接替代原有標識,模擬陣列傳參)
p(a,b)
實際上這與普通的指標定義是非常類似的,所注意的地方便是因為優先順序的原因將*p加上括號(模擬指向二維陣列的指標的定義方式)
·定義的一些注意事項
指標函式型別的定義比其他指標的定義更加嚴格,即為必須做到引數的完全對應,如以下例子
錯誤
int (*p)(int)=add
int (*p)(double)=add
正確int (*p)(int ,int)=add
在c中,我們所接觸到的第乙個函式指標應該是qsort排序,這也使我們能夠根據不同的情況呼叫不同的函式。
情況假定:編寫乙個這樣乙個陣列,這乙個陣列可以用於索引一系列的排序函式
實現其實非常簡單我們只需在改寫(*p)為(*p[max])就行了
實現:
int(*sort) =
·題外話,如何分配乙個函式指標陣列的空間
int (*pfunct)(int, int) = (int (*)(int, int))calloc(20, sizeof(int (*)(int, int)));
感覺這個在cpp中的作用更大(小聲bb)
C 裡怎樣定義遞迴函式指標
在c 裡說到函式指標,有很多人都是避而遠之,更別說什麼 遞迴函式指標 了。但是實際上有的東西越是神秘,其原理反而越簡單,所以我這裡就先賣乙個關子,假裝介紹乙個 高深的技巧 一樣做這個開場白了。什麼是 函式指標 呢?別砸我!我想從頭開始講 比如我們定義了乙個函式 int f char 我們先不管它的實...
指標陣列 陣列指標 函式指標 函式指標陣列
陣列指標 指向陣列的指標,是乙個指標,其指向的型別是陣列 指標陣列 元素為指標的陣列,是乙個陣列,其中的元素為指標。例如 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 表示函式指標,可以指向無參,且返回值為整型指標的函式。右左規則 因為...