前言:
最近在寫差分進化演算法的時候,測試函式很多,每次只能測試乙個函式,那麼如何實現每次換函式時盡量少改動**呢?
想了想,決定define
乙個全域性常量
fun,每次換函式的時候只改動這個數,再根據這個數的值去呼叫相應的函式。可是這樣一來不是要寫好多
if else
或者switch.
數量一多就不好了。如果函式也有陣列就好了,改下下標就能訪問相應的陣列元素……
突然想到在做作業系統實驗的時候,好像看到乙個叫做函式指標的東西。那麼使用函式指標陣列就可以將函式們當作陣列來使用。
函式名其實就是乙個指標,指向函式的入口位址。
必須宣告引數
,表明這是乙個函式指標;
必須用括號把*
和函式名括起來
,表明這是函式指標,而不是返回乙個指標的函式。
既然函式名可以通過函式指標加以儲存,那麼也一定能定義乙個陣列來存這些指標,這就是函式指標陣列。
正確使用函式指標陣列的前提條件是,這若干個需要通過函式指標陣列儲存的函式必須有相同的引數和返回值。
使用的時候直接把需要呼叫的函式名賦給函式指標即可。
既然說函式名是乙個指標的話,那麼函式的呼叫就有2
種方式:
函式名(引數列表)
(*
函式名)(引數列表)
使用函式指標的時候,也是可以使用這2
種呼叫方法。
總之一句話,給函式指標賦值後就把它當作普通函式用就行啦~
#include usingview codenamespace
std;
#define fun 0
void (*f[2])(int a, int
b);void f1(int a, int
b)void f2(int a, int
b)void f3(int a, int
b)int
main()
指標陣列 陣列指標 函式指標 函式指標陣列
陣列指標 指向陣列的指標,是乙個指標,其指向的型別是陣列 指標陣列 元素為指標的陣列,是乙個陣列,其中的元素為指標。例如 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...