C++指向函數(shù)的指針用法詳解
本文以實(shí)例形式展示了C++指向函數(shù)的指針用法,是深入學(xué)習(xí)C++所必須掌握的關(guān)鍵知識(shí)點(diǎn)。分享給大家供大家參考之用。具體方法如下:
函數(shù)指針
現(xiàn)來看看以下聲明語句,看看其含義:
float (*h(int, void (*)(int)))(int);
以下是一個(gè)變量指針的定義語句:
float* pf;
以下是一個(gè)普通函數(shù)的聲明語句:
float f();
請(qǐng)看以下聲明語句:
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的類型:
float (*)();
若要調(diào)用h所指的函數(shù), 解引用這個(gè)指針即可:
(*h)();
它的縮寫為(注意, 僅僅是縮寫):h();
注意不能將(*h)兩邊的括號(hào)去掉, 去掉后,*h()等價(jià)于*(h()). ANSI C會(huì)把它認(rèn)為是以下語句的縮寫:
*((*h)());
上面的語句表示: 執(zhí)行h所指向的函數(shù), 然后解引用函數(shù)的返回值.
若h指向的函數(shù)有參數(shù), 參數(shù)是指向函數(shù)的指針呢? 假設(shè)該參數(shù)的類型為: 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ù)的指針呢? 該指針的類型為float(*)(int).
float (*h(parameter))(int);
其中parameter為h所指函數(shù)的參數(shù), 假設(shè)參數(shù)類型有兩個(gè), 一個(gè)為int型, 一個(gè)類型為: void (*)(int), 則最終的結(jié)果為:
float (*h(int, void (*)(int)))(int);
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
C語言實(shí)現(xiàn)兩個(gè)變量值交換的三種方式
兩個(gè)變量值的交換是編程中最常見的問題之一,以下將介紹三種變量的交換方式,其中第一種方式是最常用也是最實(shí)用的,后兩種方式一般只在特殊限制下使用,需要的朋友可以參考下2025-03-03
Qt QThreadPool線程池的實(shí)現(xiàn)
QThreadPool管理和重新設(shè)計(jì)單個(gè)QThread對(duì)象,以幫助降低使用線程的程序中的線程創(chuàng)建成本,本文主要介紹了Qt QThreadPool線程池的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2007-03-03
C++?Qt開發(fā)之運(yùn)用QJSON模塊解析數(shù)據(jù)
JSON(JavaScript?Object?Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,它易于人閱讀和編寫,也易于機(jī)器解析和生成,本文主要介紹了Qt如何運(yùn)用QJson組件的實(shí)現(xiàn)對(duì)JSON文本的靈活解析功能,需要的可以參考下2024-01-01
C++ 使用VS Code運(yùn)行程序時(shí)終端輸出中文亂碼的解決辦法
這篇文章主要介紹了C++ 使用VS Code運(yùn)行程序時(shí)終端輸出中文亂碼的解決辦法 ,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
如何通過wrap malloc定位C/C++的內(nèi)存泄漏問題
用C/C++開發(fā)的程序執(zhí)行效率很高,但卻經(jīng)常受到內(nèi)存泄漏的困擾。本文提供一種通過wrap malloc查找memory leak的思路。2021-05-05
C語言實(shí)現(xiàn)大數(shù)值金額大寫轉(zhuǎn)換的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)大數(shù)值金額大寫轉(zhuǎn)換的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-03-03
VScode配置C語言環(huán)境完整版(親測(cè)可用)
這篇文章主要介紹了VScode配置C語言環(huán)境完整版,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08

