C++指向函數(shù)的指針用法詳解
本文以實例形式展示了C++指向函數(shù)的指針用法,是深入學習C++所必須掌握的關鍵知識點。分享給大家供大家參考之用。具體方法如下:
函數(shù)指針
現(xiàn)來看看以下聲明語句,看看其含義:
float (*h(int, void (*)(int)))(int);
以下是一個變量指針的定義語句:
float* pf;
以下是一個普通函數(shù)的聲明語句:
float f();
請看以下聲明語句:
float* g();
因為()的優(yōu)先級高于*, 所以相當于:
float* (g());
g是一個函數(shù), 返回值為float*, 參數(shù)為void
而
float (*h)();
中, h是個指針, 指向一個返回值為float的函數(shù).
去掉h, 就是h的類型:
float (*)();
若要調(diào)用h所指的函數(shù), 解引用這個指針即可:
(*h)();
它的縮寫為(注意, 僅僅是縮寫):h();
注意不能將(*h)兩邊的括號去掉, 去掉后,*h()等價于*(h()). ANSI C會把它認為是以下語句的縮寫:
*((*h)());
上面的語句表示: 執(zhí)行h所指向的函數(shù), 然后解引用函數(shù)的返回值.
若h指向的函數(shù)有參數(shù), 參數(shù)是指向函數(shù)的指針呢? 假設該參數(shù)的類型為: void (*)(int), 則h可以聲明為:
float (*h)(void(*)(int));
已知有以下函數(shù)的聲明:
float func(int);
若要使h指向函數(shù)func, 只需要將(*h)替換func即可:
float (*h)(int);
更進一步, h所指的函數(shù)不返回float, 而是返回指向函數(shù)的指針呢? 該指針的類型為float(*)(int).
float (*h(parameter))(int);
其中parameter為h所指函數(shù)的參數(shù), 假設參數(shù)類型有兩個, 一個為int型, 一個類型為: void (*)(int), 則最終的結果為:
float (*h(int, void (*)(int)))(int);
希望本文所述對大家的C++程序設計有所幫助。
相關文章
C++?Qt開發(fā)之運用QJSON模塊解析數(shù)據(jù)
JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,它易于人閱讀和編寫,也易于機器解析和生成,本文主要介紹了Qt如何運用QJson組件的實現(xiàn)對JSON文本的靈活解析功能,需要的可以參考下2024-01-01
C++ 使用VS Code運行程序時終端輸出中文亂碼的解決辦法
這篇文章主要介紹了C++ 使用VS Code運行程序時終端輸出中文亂碼的解決辦法 ,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧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語言實現(xiàn)大數(shù)值金額大寫轉換的方法詳解
這篇文章主要為大家詳細介紹了如何利用C語言實現(xiàn)大數(shù)值金額大寫轉換的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2023-03-03

