我們都知道,在C語言中,指標變數中儲存的就是一個地址。我們可以通過 ‘*’ 運運算元,取出地址中存放的數值。而通過對指標變數的加減,我們就能知道一組地址中存放的資料的值,對許多個變數進行批次操作。其實函數也有地址,函數名就是函數的地址。
函數返回值 (*變數名) (參數列中的型別);
如:int (*func) (int,int);
所定義的函數指標變數名是 func;變數指向的函數,其返回值是int型別,
有兩個引數,都是int型別。
typedef int (*func) (int,int);
使用typedef關鍵字,將 func 定義為一個
返回值是int型別,有兩個int引數的函數指標型別
typedef int (*func) (int,int);
func funcA[4] = {add,sub,mul,div};
//int (*funcA[4]) (int,int) = {add,sub,mul,div}; 也是可以的,一句話就可以定義和賦值。
for(int i = 0; i<4; i++)
{
printf("%d\n", funcA[i](20,10) );
}
/*
定義了簡單的4個函數,兩個整形數的加減乘除,返回值都是 int 型別,也都有了兩個 int 型別的引數。
在這裡建立一個擁有4個函數指標元素的陣列,賦值了加減乘除4個函數名(也就是函數地址)。
就可以利用迴圈,自動連續呼叫不同的函數,還是很讓人感到驚喜的。
*/
30
10
200
2