C 使用 typedef 簡化函式指標定義

2021-08-18 02:23:26 字數 1112 閱讀 9054

函式型別由返回型別和引數列表決定,與函式名無關:

// 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 的函式,那麼,它的位址就是函式的名字,這一點如同 陣列一樣,陣列的名字就是陣列的起始位址。定義乙個...