函數指針是指向函數的指針,但是對于許多新手小伙伴們來說對指向函數的指針的使用并不是非常的了解,那么我們現在就去看看C++指向函數的指針使用方法,希望對你有所幫助。
函數指針
現來看看以下聲明語句,看看其含義:
float (*h(int, void (*)(int)))(int);
以下是一個變量指針的定義語句:
float* pf;
以下是一個普通函數的聲明語句:
float f();
請看以下聲明語句:
float* g();
因為()的優先級高于*, 所以相當于:
float* (g());
g是一個函數, 返回值為float*, 參數為void
而
float (*h)();
中, h是個指針, 指向一個返回值為float的函數.
去掉h, 就是h的類型:
float (*)();
若要調用h所指的函數, 解引用這個指針即可:
(*h)();
它的縮寫為(注意, 僅僅是縮寫):h();
注意不能將(*h)兩邊的括號去掉, 去掉后,*h()等價于*(h()). ANSI C會把它認為是以下語句的縮寫:
*((*h)());
上面的語句表示: 執行h所指向的函數, 然后解引用函數的返回值.
若h指向的函數有參數, 參數是指向函數的指針呢? 假設該參數的類型為: void (*)(int), 則h可以聲明為:
float (*h)(void(*)(int));
已知有以下函數的聲明:
float func(int);
若要使h指向函數func, 只需要將(*h)替換func即可:
float (*h)(int);
更進一步, h所指的函數不返回float, 而是返回指向函數的指針呢? 該指針的類型為float(*)(int).
float (*h(parameter))(int);
其中parameter為h所指函數的參數, 假設參數類型有兩個, 一個為int型, 一個類型為: void (*)(int), 則最終的結果為:
float (*h(int, void (*)(int)))(int);
本文以實例形式展示了C++指向函數的指針使用方法,是深入學習C++所必須掌握的關鍵知識點。
新聞熱點
疑難解答
圖片精選