今天我們要介紹的是函式指標。內容由以下3部分組成:
① 函式指標的概念,為了面試時能夠說出來。
② 函式指標的用法 當然是為工作用到嘍
③ 函式指標的例項,用一些練習來加深印象。
④經典面試題:函式指標和指標函式的區別
好 開始!
①函式指標的概念:
1.1 函式指標: 是指向函式的指標變數
在程式執行中,函式是程式演算法指令部分,他們和陣列一樣也占用記憶體空間,也都有相應的位址。我們程式設計師可以使用指標變數指向陣列的首位址,同樣,也可以使用指標變數指向函式**的首位址, 指向函式**首位址的指標變數,稱為函式指標。
1.2 函式指標有兩個用途:呼叫函式和做函式的引數。
② 函式指標的用法
2.1 用法:返回值型別 ( * 指標變數名) ([形參列表]);
注1:「返回值型別」說明函式的返回型別,「(指標變數名 )」中的括號不能省,括號改變了運算子的優先順序。若省略整體則成為乙個函式說明,說明了乙個返回的資料型別是指標的函式,後面的「形參列表」表示指標變數指向的函式所帶的引數列表。例如:
//比較兩個string物件的長度
bool lengthcompare(string ch1 , string ch2);
該函式的型別是bool ( string , string ) 。要想宣告乙個可以指向該函式的指標,只需要替換函式名字即可。
// pf 指向乙個函式,該函式的引數是兩個 string的引用,返回值是bool型別。
bool (*pf)(string ch1 , string ch2 ); //宣告了乙個函式指標
注2:函式括號中的形參可有可無,視情況而定。③ 函式指標的例項下面的簡單例子說明函式指標呼叫的方法。
#include
int max(int
x,int
y)int main()
輸入5 , 2 結果如下:
此外 在上個例子中
ptr = max ; 也可以寫成 ptr = & max ;
等價的賦值語句,取位址符是可選的。
此外,我們還能直接使用指向函式的指標來呼叫該函式,無需提前解引用指標。
int d1 = ptr( 1 , 2 ); //呼叫max函式
int d2 = (*ptr)( 1 , 2 );//乙個等價的呼叫
int d3 = max(1 , 2 ); //另乙個等價的呼叫
④函式指標和指標函式的區別關鍵考點:
指標函式的概念;
指標函式的使用。
int &test(x,y);
#include
char *ch(char *str1 ,char *str2)
dowhile (*str1!=null);
return p;
}int main()
結果輸出 」 hello6789」
上面**,函式char *ch()表示的就是乙個返回字元型指標的函式。
答案:函式指標是乙個指向函式的指標。他的本質是乙個指標,而指標函式只是說明他是乙個返回值為指標的函式,它本質是乙個函式,
詳解C C 函式指標宣告
要理解乙個c程式,僅僅理解組成該程式的符號是不夠的。程式設計師還必須理解這些符號是如何組合成宣告 表示式 語句和程式的。我們先來看看下面的乙個語句 1 void 0 這是當計算機啟動時,硬體將呼叫首位址為0位置的子例程。像這樣的表示式恐怕會令每個c c 程式設計師的內心都 不寒而慄 吧。然而,完全不...
詳解C C 函式指標宣告
要理解乙個c程式,僅僅理解組成該程式的符號是不夠的。程式設計師還必須理解這些符號是如何組合成宣告 表示式 語句和程式的。我們先來看看下面的乙個語句 1 void 0 這是當計算機啟動時,硬體將呼叫首位址為0位置的子例程。像這樣的表示式恐怕會令每個c c 程式設計師的內心都 不寒而慄 吧。然而,完全不...
詳解C C 函式指標宣告
要理解乙個c程式,僅僅理解組成該程式的符號是不夠的。程式設計師還必須理解這些符號是如何組合成宣告 表示式 語句和程式的。我們先來看看下面的乙個語句 1 void 0 這是當計算機啟動時,硬體將呼叫首位址為0位置的子例程。像這樣的表示式恐怕會令每個c c 程式設計師的內心都 不寒而慄 吧。然而,完全不...