學習C 函式指標

2021-06-28 11:06:10 字數 1746 閱讀 4914

函式指標指向的是函式而不是物件。

bool length(const string &, const string &);
如果要宣告乙個指向該函式的指標,只需要將指標替換函式名。

bool (*pf)(const string &, const string &);
如果沒有*f兩邊():

bool *pf(const string &, const string &);
宣告了乙個名為pf的函式,該函式返回型別為 bool *

pf = length;

pf = &length;//兩條語句是等價的,pf指向函式名為length的函式。

bool (*pf)(const string &,const string &) = length;

當使用過載函式時,必須清晰地界定到底應該選用哪個函式。如果定義了指向過載函式的指標,編譯器通過指標型別決定選用哪個函式,指標型別必須與過載函式中的某乙個精確匹配。

和陣列類似,不能定義函式型別的形參,但是形參可以是指向函式的指標。

void usebigger(const string &s1, const string &s2,

bool pf(const string &, const string &));//第三個形參是函式型別,會自動轉換成指向函式的指標

void usebigger(const string &s1, const string &s2,

bool (*pf)(const string &, const string &));//兩種宣告是等價的。這個是顯式地將形參定義成指向函式的指標

usebigger(s1, s2, length);//會自動地將函式length轉換成指向該函式的指標

decltype

decltype( (變數名) ) 的返回結果永遠都是引用。

decltype(  變數名  ) 的返回結果只有當變數本身是乙個引用時才是引用。

雖然不能返回乙個函式,但是可以返回指向函式型別的指標。

我們必須把返回型別寫成指標形式,編譯器不會自動地將函式返回型別當成對應的指標型別處理。

using f = int(int *, int);

using pf = int (*)(int *, int);

pf f1(int);//正確

f f1(int);//錯誤

f *f1(int);//正確

string::size_type sumlength(const string &, const string &);

string::size_type largerlength(const string &, const string &);

decltype(sumlength) *getfcn(const string &);//getfcn返回型別是 指向sumlength函式的指標

//decltype作用於某個函式時,返回函式型別不是指標型別,所以要加上*來表明需要返回指標。

C 學習筆記 函式指標與指標函式

函式指標 指向函式的指標,首先它是指標變數 同指向乙個整形變數 字元 陣列一樣 其次它指向乙個函式 位址 宣告 函式型別 指標變數名 形參列表 函式型別,指明函式的返回型別,由於 優先順序高於 所以指標變數名外的括號不能少,後面形參列表表示指標變數指向的函式所帶的引數列表。上面相當於用函式指標p,代...

C 學習筆記 函式指標

1 c 指標函式基礎 函式是有位址的,它表示函式執行的入口。我們知道位址值並沒有用,但是可以將位址值當做實參傳入到其它函式中,這可以在不同的時期呼叫不同的函式。函式指標包括三點 如何獲取函式位址,如何申明函式指標,如何呼叫函式。簡單示例 include double betsy int double...

C 學習之普通函式指標與成員函式指標

函式指標 function pointer 是通過指向函式的指標間接呼叫函式,相信很多人對指向一般函式的函式指標使用較多,而對指向類成員函式指標則比較的陌生。一 普通函式指標 通常我們所說得函式指標指向一般普通函式指標,和其他的指標一樣,函式指標指向某種特定的型別,所有被同一指標運用的函式必須指向某...