bool (*pf)(const string& ,const string &);
這一句宣告乙個指向函式的指標,它所指向的函式帶有兩個const string &形參,返回bool型別
typedef bool (*fun)(const string&,const string&);
這一句表示fun是一種指向函式的指標型別的名字。注意pf與fun的區別,pf可以看做是乙個物件,該物件是乙個指向函式的指標,而fun可以看做是乙個型別,該型別的物件是指向函式的指標。即fun是一類,pf是乙個!
用typedef 定義了fun後就可以簡化函式指標的宣告,如pf就等價於 fun pf;
指向函式的指標可以作為函式的形參和返回值,作為函式的形參的方式比較簡單,作為返回值的寫法比較複雜,如下:
int (*ff(int))(int *,int);
對於這個宣告式可以從內向外看,ff(int)是乙個函式,這個函式返回的是int (*)(int*,int) 顯然它是乙個函式指標,所以ff使乙個返回值為函式指標,帶乙個int引數的函式。
另:前面說過用typedef 定義的是乙個函式指標型別,它可以像一般型別的建構函式一樣建立乙個物件:
如:typedef void (* sessionophandler)(packet* recvpacket);//sessionophandler是乙個函式指標型別
#define op_selector(_selector) (sessionophandler)(&_selector) //建構函式將建立並返回乙個sessionophandler物件,並把&_selector賦值給該物件。
但是有個疑問,這個建構函式是誰定義的呢?
指向函式的指標 函式指標
如果在程式中定義了乙個函式,在編譯時,編譯系統為函式 分配一段儲存空間,這段儲存空間的起始 又稱入口 位址 稱為這個函式的指標。指標即是位址 我們定義乙個指標變數,這個指標變數指向乙個整型資料變數的位址,我們稱指向乙個整型資料的指標變數 那麼它指向乙個函式的位址,稱為指向乙個函式的指標變數。形如 i...
函式指標 指向函式的指標
乙個函式總是占用一段連續的記憶體區域,函式名在表示式中有時也會被轉換為該函式所在記憶體區域的首位址,這和陣列名非常類似。我們可以把函式的這個首位址 或稱入口位址 賦予乙個指標變數,使指標變數指向函式所在的記憶體區域,然後通過指標變數就可以找到並呼叫該函式。這種指標就是函式指標。函式指標的定義形式為 ...
指向函式的指標,指向函式的指標作為函式引數
1.基本法 include pragma warning disable 4996 pragma warning disable 4715 指向函式的指標作為函式的引數 有兩個整數a,b,讓使用者輸入1,2或者3,當輸入1時,給出相對大值,當輸入2時,給出相對小值,當輸入3時,給出兩者之和 1.可以...