C 函式指標簡介及應用

2022-07-22 14:54:22 字數 1725 閱讀 1566

c/c++中函式指標是一種指標型別,其指向乙個函式的首位址。既然是指標型別,使用時就應該像int,int*等型別一樣申明定義。

如語句 int (*fp) (int, int); 就是宣告乙個函式指標變數fp,其指向乙個輸入為兩個int型引數,輸出為int型的函式。

對函式指標變數賦值可以有兩種方式。如有乙個函式 int add(int a, int b)。則可以定義:

1) fp=&add;

2) fp=add;

前一種方式是顯式賦值,後一種是隱式賦值。兩者是等同的。同樣在使用函式指標變數時也有兩種方式:

1)(*fp)(2,3);

2)fp(2,3);

兩者均相當於與執行add(2,3),結果為5。

函式指標主要可以用於兩個場景中:選單設計和函式引數。選單設計中我們可以使用乙個函式指標陣列來表示幾種操作。另外函式指標變數也可以作為函式引數,c++中的endl操作符就是乙個很好的例子,可以參考

下面是乙個完整的函式指標使用例子。其中包括函式指標的兩種定義方式和兩種使用方法。另外,display函式是函式指標作為函式引數的應用。簡易計算器體現了函式指標在選單設計中的應用。

1 #include2

using

namespace

std;34

5int add(int a, intb)6

910int sub(int a, int

b)11

1415

int mul(int a, int

b)16

1920

int div(int a, int

b)21

27else

28return a/b;29}

3031

32void

display()

3336

37void test(void (*fp)())

3841

4243

44int

main()

45; //

here ope is an array, and each element is a function pointer.

59int

a,b;

60int

sel;

61 cout<<"

please input two integers: ";

62 cin>>a;

63 cin>>b;

64 cout<<"

please select the operation:

"<65 cout<<"

1: +

"<66 cout<<"

2: -

"<67 cout<<"

3: *

"<68 cout<<"

4: /

"<69 cout<<"

0: end

"<70 cin>>sel;

71if(sel<0 || sel>4

)72 cout<<"

error operation!

"<73else

if(sel==0)74

break;75

else

7680}81

return0;

82 }

函式指標及應用

函式的名字也是函式的位址所在。在學習函式指標時發現乙個問題。include voidf int main void pf void f 宣告函式指標f pf 老師是這樣寫的pf 但是我這樣寫,函式也能正常的執行。printf p n pf printf p n f system pause 問題先記...

關於C之函式指標及typedef簡介

先看乙個c標準庫中的乙個函式qsort 它的功能是對任何型別的陣列進行排序。void qsort void base,size t nitems,size t size,int compar const void const void 引數 其中形參compar就是乙個函式指標。我們先看乙個使用qs...

C 資料結構及指標 簡介

c 資料結構 c c 陣列允許定義可儲存相同型別資料項的變數,但是結構是 c 中另一種使用者自定義的可用的資料型別,它允許您儲存不同型別的資料項。結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性 title 標題 author 作者 subject 類目 boo...