我是 C++ 的初学者,我在理解函数指针时遇到了问题:
main()
{
double pam(int);
double (*pf)(int);
pf = pam;
double x = pam(4);
double y = (*pf)(5);
double y = pf(5);
}
Run Code Online (Sandbox Code Playgroud)
怎么可能(*pf)()并且pf()是一样的,pf指向函数的指针在哪里?
其他指针和指向函数的指针有什么区别??
*pf() 和 pf() 如何相同,其中 pf 是指向函数的指针?
它们不一样(因为运算符优先级)。如果您的意思(*pf)()和pf()实际上相同,那是因为语言规则是这样说的。具体来说,规则说:
[表达式调用]
函数调用是一个后缀表达式,后跟括号,其中包含一个可能为空的、逗号分隔的初始化子句列表,它们构成函数的参数。后缀表达式应具有函数类型或函数指针类型。对于对非成员函数或静态成员函数的调用,后缀表达式应是引用函数的左值(在这种情况下,函数到指针的标准转换([conv.func])被抑制在后缀表达式上),或具有函数指针类型。
在 的情况下(*pf)(),表达式(*pf)是引用函数的左值,而在 的情况下pf(),表达式pf具有函数指针类型。在这两种情况下,所指向的函数都会pf被调用。
其他指针和指向函数的指针有什么区别??
主要区别在于函数指针指向函数,而指向对象的指针指向对象。