簡體   English   中英

指向 C++ 中 function 的指針,(*pf)() 和 pf 是否相同?

[英]pointer to the function in C++,are (*pf)() and pf same?

我是 C++ 的初學者,我在理解函數指針時遇到問題:

main()
{
    double pam(int);
    double (*pf)(int);
    pf = pam;            
    double x = pam(4);    
    double y = (*pf)(5); 
    double y = pf(5);
} 

(*pf)()pf()怎么可能相同,其中pf是指向 function 的指針?

其他指針和指向 function 的指針有什么區別??

*pf() 和 pf() 如何在 pf 是指向 function 的指針的情況下相同?

它們不一樣(因為運算符優先級)。 如果您的意思是(*pf)()pf()實際上是相同的,那是因為語言規則是這樣說的。 具體來說,規則說:

[expr.call]

function 調用是一個后綴表達式,后跟括號,其中包含可能為空的逗號分隔的初始化子句列表,這些初始化子句構成 arguments 到 ZC1C425268E68385D14AB5074C17A9。 后綴表達式應具有 function 類型或 function 指針類型。 For a call to a non-member function or to a static member function, the postfix expression shall either be an lvalue that refers to a function (in which case the function-to-pointer standard conversion ([conv.func]) is suppressed在后綴表達式上),或具有 function 指針類型。

(*pf)()的情況下,表達式(*pf)是指向 function 的左值,而在pf()的情況下,表達式pf具有 function 指針類型。 在這兩種情況下,都會調用pf指向的 function。

其他指針和指向 function 的指針有什么區別??

主要區別在於 function 指針指向函數,而指向對象的指針指向對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM