先來看乙個函式:
[cpp]view plain
copy
intsum(
inta,
intb)
這個函式,呼叫方式可以如
sum(1, 2);
若要表示函式的指標,可以用&sum,也可以將sum前邊的位址操作符&去掉,對於普通函式,位址操作符&是可選的。
下面介紹函式指標變數和函式指標型別:
1. 函式指標變數
[cpp]view plain
copy
int(*fnname)(
int,
int);
// 宣告乙個函式指標,可以將fnname理解為新定義的變數,注意括號不可少
fnname = ∑ // 將sum函式的位址賦給它,函式指標只可通過同型別函式或者函式指標或者0來初始化或賦值
(*fnname)(3, 5);
// 和呼叫sum(3, 5)的效果是一樣的
fnname(3,5); //不解引用也是可行的
第1行宣告了乙個函式指標變數,如果有疑問,可以將fnname
理解為乙個新定義的變數。函式指標變數的宣告格式:
返回型別(*
函式指標變數)(引數列表)
;第2行將sum函式指標賦給它,注意,只有兩個函式指標引數型別,返回值型別完全相同才可以賦值,注意修飾符const,&等不同也會導致賦值失敗。
第3行是呼叫,呼叫格式:(*
函式指標變數)(實參列表);
2. 函式指標型別
前面介紹了函式指標變數的宣告,那麼函式指標型別如何宣告呢?
在函式指標宣告前面加個typedef就成了函式指標型別定義。
[cpp]view plain
copy
typedef
int(*fntype)(
int,
int);
// 宣告乙個函式指標型別
fntype fb = ∑ // 定義乙個fntype型別的變數,並賦值
(*fb)(3, 5); // 函式呼叫
第1行宣告函式指標的型別,fntype
便是新宣告的型別,它是函式指標的型別。
第2行定義乙個fntype型別的變數,並將sum函式位址賦值給它。
第3行是函式呼叫。
3、函式指標形參
[cpp]view plain
copy
intsum(
inta,
intb)
typedef
int(*fntype)(
int,
int);
intfun1(fntype ft,
intx,
inty)
// 函式指標可以定義在引數列表中,在函式體內使用
intfun2(
int(*fn)(
int,
int),
intx,
inty)
intmain()
指向函式的指標 函式指標
如果在程式中定義了乙個函式,在編譯時,編譯系統為函式 分配一段儲存空間,這段儲存空間的起始 又稱入口 位址 稱為這個函式的指標。指標即是位址 我們定義乙個指標變數,這個指標變數指向乙個整型資料變數的位址,我們稱指向乙個整型資料的指標變數 那麼它指向乙個函式的位址,稱為指向乙個函式的指標變數。形如 i...
函式指標 指向函式的指標
乙個函式總是占用一段連續的記憶體區域,函式名在表示式中有時也會被轉換為該函式所在記憶體區域的首位址,這和陣列名非常類似。我們可以把函式的這個首位址 或稱入口位址 賦予乙個指標變數,使指標變數指向函式所在的記憶體區域,然後通過指標變數就可以找到並呼叫該函式。這種指標就是函式指標。函式指標的定義形式為 ...
指向函式的指標,指向函式的指標作為函式引數
1.基本法 include pragma warning disable 4996 pragma warning disable 4715 指向函式的指標作為函式的引數 有兩個整數a,b,讓使用者輸入1,2或者3,當輸入1時,給出相對大值,當輸入2時,給出相對小值,當輸入3時,給出兩者之和 1.可以...