[英]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.