c++函數參數或返回值為函數指針


C++中函數指針的形式為:返回值類型 + 參數類型,函數沒有值類型,但是卻可以聲明函數的指針,因為函數是可尋址的,存放在內存中的代碼段,可以從指針訪問。

函數指針可以聲明為:

void (*pF)(void); 
//   ^括號1
//        ^括號2

其中pF為參數為空,返回值也為空的函數類型,因為*操作符的優先級低於函數調用操作符,所以必須在*pF外加括號。

那么如何聲明返回值為函數指針的函數呢?

先給出一個實例:

void (* fun() )();
//   ^ 括號a  
//         ^括號b
//             ^括號c

該函數的返回值為一個函數指針,解析下這個聲明的三個括號分別代表的意義:括號a對應第一個聲明中的括號1,括號c對應第一個聲明中的括號2,而括號c則是該函數自身的函數調用符,可以在該括號內放入函數參數如:

//參數為一個int類型
void (* fun(int x) )();
//參數為兩個int類型
void (* fun(int x, int y) )();
//參數為一個函數指針類型
void (* fun( void (*f)() ) )();

其中第三個例子的參數為一個函數指針,括號比較多,要仔細看才能夠看出這個聲明的結構。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM