函式型別由返回型別和引數列表決定,與函式名無關:
// pf 指向乙個返回bool,且有兩個const string& 型別引數的函式,*pf 必須用括號括起來,否則會變成函式宣告
bool (*pf)(const string &, const string &);
由於函式指標型別容易變得笨拙,因此用 typedef 關鍵字簡化定義,使函式指標易於使用:
typedef bool (*cmpfcn)(const string &, const string &);
cmpfcn 為乙個函式指標型別的名稱。
函式名可當成指標,函式引數型別可以是可以是函式(會被自動當成函式指標)或者函式指標。函式可以返回函式指標型別,但不能返回函式型別。
// ff 為函式名,引數為 int,返回型別為 int (*)(int*, int) 的函式指標,讀函式指標的最佳方法是從內到外。
int (*ff(int))(int*, int);
一段code:
class suitek_ctest;
class suitek_ctestclassinfo;
typedef suitek_ctest* (*pmtestfactory)();
typedef void (*pmtestparams)( suitek_ctestclassinfo* phead );
class suitek_ctestclassinfo
;suitek_ctestclassinfo::suitek_ctestclassinfo( pmtestfactory pmfactory, pmtestparams pmparams,
const char * pname, const char * pversion, short wclassattributes ) :
mname(pname),
mversion(pversion),
mdescription(""),
mfactory(pmfactory),
mparams(pmparams)
《c++ primer 7.9》 C C 函式指標 typedef簡化定義
學習要點 1,函式位址的一般定義和typedef簡化定義 2,函式位址的獲取 3,a函式位址作為b函式引數的傳遞 函式存放在記憶體的 區域內,它們同樣有位址.如果我們有乙個int test int a 的函式,那麼,它的位址就是函式的名字,這一點如同 陣列一樣,陣列的名字就是陣列的起始位址。定義乙個...
C C 函式指標 typedef簡化定義
學習要點 1,函式位址的一般定義和typedef簡化定義 2,函式位址的獲取 3,a函式位址作為b函式引數的傳遞 函式存放在記憶體的 區域內,它們同樣有位址.如果我們有乙個int test int a 的函式,那麼,它的位址就是函式的名字,這一點如同 陣列一樣,陣列的名字就是陣列的起始位址。定義乙個...
C C 函式指標 typedef簡化定義
學習要點 1,函式位址的一般定義和typedef簡化定義 2,函式位址的獲取 3,a函式位址作為b函式引數的傳遞 函式存放在記憶體的 區域內,它們同樣有位址.如果我們有乙個int test int a 的函式,那麼,它的位址就是函式的名字,這一點如同 陣列一樣,陣列的名字就是陣列的起始位址。定義乙個...