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 #include2using
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...