1、函式指標和函式指標陣列的定義
int (* fp) (int); //首先根據結合性,第乙個括號代表fp是乙個指標,考慮到第二個括號代表函式呼叫運算子,因此可以判斷fp是乙個函式指標,它指向乙個入口引數與返回值都是int型別的函式;
int *fp(int); //由於函式呼叫的運算子比*的優先順序要高,編譯器首先認為fp(int)是乙個運算單位,這顯然是乙個函式,而對函式的返回值做取內容的運算*(fp(int))的結果是乙個int,因此,fp是乙個以整數為入口引數,返回值為指向int型別的指標的函式
int **fp_array[10](int); //[ ]和()的優先順序都比*要高,並且和()的結合型是自左向右,因此編譯器首先將fp_array作為乙個運算單位,這是乙個陣列,考慮到後面的函式呼叫運算子,我們可以判斷fp_array[10](int)是乙個函式陣列,陣列中的每個元素都是乙個以整數型別為引數的函式,這個函式的返回值是乙個執行整數的二重指標;然而,c語言中並沒有函式陣列的概念,因此這行語法錯誤。
int *(* fp_array[10])(int);//對於fp_array,這首先是乙個陣列,考慮其前面的*,所以陣列中的每個元素都是指標,即使乙個指標陣列,再考慮到後面的函式呼叫運算子,所以fp_array是乙個函式指標陣列。它以int為入口引數,返回值是int *。
2、使用:
int * myfuction(int);
int * (* fp)(int);
int * ptr;
fp = myfuction; //為函式指標賦初值,使它指向函式myfuction;
ptr = (*fp)(3); //通過函式指標呼叫函式,與myfuction(3)的效果是一樣的;
ptr = fp(4); //這也是通過函式指標呼叫函式,與(* fp)(4)的效果是一樣的;
陣列指標和指標陣列 函式指標和指標函式
一 陣列指標與指標陣列 1,指標陣列 所謂指標陣列,就是指標組成的陣列,即陣列的元素為指標 int pa size size為元素數目,元素的值為int型別的指標 2,陣列指標 所謂陣列指標,就是指向陣列的指標,即其是乙個指標,指向陣列。int pa size size為陣列的元素數目,pa指向乙個...
函式指標 函式指標陣列和指標函式
1.函式指標 這個指標返回乙個函式 int f int x 宣告乙個函式指標 f func 將func函式的首位址賦給指標f 2.函式指標陣列 這個指標返回一組函式 include stdio.h void function0 void void function1 void void functi...
函式指標和指標函式 陣列指標和指標陣列
函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...