C++指向函數(shù)的指針用法詳解
本文以實(shí)例形式展示了C++指向函數(shù)的指針用法,是深入學(xué)習(xí)C++所必須掌握的關(guān)鍵知識(shí)點(diǎn)。分享給大家供大家參考之用。具體方法如下:
函數(shù)指針
現(xiàn)來(lái)看看以下聲明語(yǔ)句,看看其含義:
float (*h(int, void (*)(int)))(int);
以下是一個(gè)變量指針的定義語(yǔ)句:
float* pf;
以下是一個(gè)普通函數(shù)的聲明語(yǔ)句:
float f();
請(qǐng)看以下聲明語(yǔ)句:
float* g();
因?yàn)?)的優(yōu)先級(jí)高于*, 所以相當(dāng)于:
float* (g());
g是一個(gè)函數(shù), 返回值為float*, 參數(shù)為void
而
float (*h)();
中, h是個(gè)指針, 指向一個(gè)返回值為float的函數(shù).
去掉h, 就是h的類(lèi)型:
float (*)();
若要調(diào)用h所指的函數(shù), 解引用這個(gè)指針即可:
(*h)();
它的縮寫(xiě)為(注意, 僅僅是縮寫(xiě)):h();
注意不能將(*h)兩邊的括號(hào)去掉, 去掉后,*h()等價(jià)于*(h()). ANSI C會(huì)把它認(rèn)為是以下語(yǔ)句的縮寫(xiě):
*((*h)());
上面的語(yǔ)句表示: 執(zhí)行h所指向的函數(shù), 然后解引用函數(shù)的返回值.
若h指向的函數(shù)有參數(shù), 參數(shù)是指向函數(shù)的指針呢? 假設(shè)該參數(shù)的類(lèi)型為: void (*)(int), 則h可以聲明為:
float (*h)(void(*)(int));
已知有以下函數(shù)的聲明:
float func(int);
若要使h指向函數(shù)func, 只需要將(*h)替換func即可:
float (*h)(int);
更進(jìn)一步, h所指的函數(shù)不返回float, 而是返回指向函數(shù)的指針呢? 該指針的類(lèi)型為float(*)(int).
float (*h(parameter))(int);
其中parameter為h所指函數(shù)的參數(shù), 假設(shè)參數(shù)類(lèi)型有兩個(gè), 一個(gè)為int型, 一個(gè)類(lèi)型為: void (*)(int), 則最終的結(jié)果為:
float (*h(int, void (*)(int)))(int);
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)之堆的實(shí)現(xiàn)和堆排序詳解
堆是計(jì)算機(jī)科學(xué)中一類(lèi)特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱(chēng),通常是一個(gè)可以被看做一棵完全二叉樹(shù)的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將詳細(xì)介紹堆的實(shí)現(xiàn)和堆排序,需要的可以參考一下2022-04-04C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析
這篇文章主要介紹了C++中的new/delete、構(gòu)造/析構(gòu)函數(shù)、dynamic_cast分析 本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05C語(yǔ)言三種函數(shù)調(diào)用約定_cdecl與_stdcall及_fastcall詳細(xì)講解
本篇文章使用的工具是vs2010,內(nèi)容可能涉及到匯編的知識(shí),建議有一些匯編基礎(chǔ)的再來(lái)看,不過(guò)沒(méi)有匯編基礎(chǔ)也沒(méi)有關(guān)系,了解一下這三種調(diào)用約定即可2022-10-10詳解c/c++鏈?zhǔn)蕉褩C枋鲞M(jìn)制轉(zhuǎn)換問(wèn)題示例
這篇文章主要為大家介紹了c/c++鏈?zhǔn)蕉褩C枋鲞M(jìn)制轉(zhuǎn)換問(wèn)題示例解析有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11C++調(diào)用C函數(shù)報(bào)錯(cuò)無(wú)法解析的外部命令/無(wú)法解析的外部符號(hào)問(wèn)題
這篇文章主要介紹了C++調(diào)用C函數(shù)報(bào)錯(cuò)無(wú)法解析的外部命令/無(wú)法解析的外部符號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08