函式指標系列 用函式指標呼叫執行函式

2021-08-07 19:42:30 字數 1572 閱讀 9993

若在程式中定義了乙個函式,在程式編譯的時候,編譯系統會給這段函式**分配一段記憶體空間,這段記憶體空間的起始位址稱為這個函式的指標(函式名實質就是函式這段**的起始位址)。

定義指向函式的指標變數的一般形式:

型別名(*指標變數)(函式引數表列)

這裡的「型別名」是指函式返回值的型別;

由於優先順序的關係「 * 指標變數名」要用圓括號括起來,若不括起來則變成 「型別名 *指標變數(函式引數表列)」,這樣則定義了乙個函式,該函式返回乙個型別指標變數。

形式舉例:

int(*p)(int,int);

定義p是乙個指向函式的指標變數,它指向含有兩個int型引數的函式,並且返回乙個int型的值。

函式舉例:

/* 

* 模擬乙個計算器,加減乘除

* 返回值是int型別

*/#include

/*函式宣告*/

int add(int a,int b);

intsub(int a,int b);

int mul(int a,int b);

int div(int a,int b);

int (*p)(int,int);//宣告函式指標,指向返回值型別為int,有兩個引數型別都是int的函式

int main(void)

while(c=='\n');

switch(c)

result=(*p)(a,b);

printf("%d

%c%d = %d\n",a,c,b,result);

return0;}

int add(int a,int b)

intsub(int a,int b)

int mul(int a,int b)

int div(int a,int b)

執行結果如下圖所示:

有時候,我們可以用到typedef,因為有時候自定義型別太長,使用typedef給自定義型別重新命名乙個簡短的名字。

舉例:

#include

int max(int a, int b);

int min(int a, int b);

typedef int (*f)(int, int); // 宣告函式指標,指向返回值型別為int,有兩個引數型別都是int的函式

int main(void)

int max(int a, int b)

int min(int a, int b)

執行結果如下圖所示:

參考資料:

1.朱友鵬,張先鳳.嵌入式linux與物聯網軟體開發.北京:人民郵電出版社,2017.

2.譚浩強.c程式設計(第四版).北京:清華大學出版社,2010.

3.4.

通過函式指標呼叫函式

指標可以不但可以指向乙個整形,浮點型,字元型,字串型的變數,也可以指向相應的陣列,而且還可以指向乙個函式。乙個函式在編譯的時候會被分配給乙個入口位址。這個函式入口位址稱為函式的指標。可以用乙個指標變數指向函式,然後通過該指標變數呼叫此函式。定義指向函式的指標變數的方法是 int p int int ...

通過函式指標呼叫函式

指標可以不但可以指向乙個整形,浮點型,字元型,字串型的變數,也可以指向相應的陣列,而且還可以指向乙個函式。乙個函式在編譯的時候會被分配給乙個入口位址。這個函式入口位址稱為函式的指標。可以用乙個指標變數指向函式,然後通過該指標變數呼叫此函式。定義指向函式的指標變數的方法是 int p int int ...

使用指標呼叫函式

指向函式的指標的定義形式 資料型別 指標變數名 函式引數表列 double x,y,z scanf lf lf x,y z max x,y printf max num is lf z 以上是主函式中的內容,表示輸入x,y兩個雙精度浮點數,然後呼叫max函式求出,試執行結果如下 請輸入要比較大小的兩...