指向C++中函数的指针,(*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
是指向函数的指针?
其他指针和指向函数的指针之间有什么区别??
如果pf是指向函数的指针,*pf((和pf((怎么会相同?
它们不一样(因为运算符的优先级(。如果你的意思是(*pf)()
和pf()
实际上是一样的,那是因为语言的规则是这样说的
[expr.call]
函数调用是一个后缀表达式,后面跟着括号,括号中可能包含一个空的、逗号分隔的初始值设定项子句列表,这些子句构成了函数的参数。后缀表达式应具有函数类型或函数指针类型。对于非成员函数或静态成员函数的调用,后缀表达式应该是引用函数的左值(在这种情况下,函数到指针的标准转换([conv.func](在后缀表达式上被抑制(,或者具有函数指针类型。
在(*pf)()
的情况下,表达式(*pf)
是指函数的左值,而在pf()
的情况下表达式pf
具有函数指针类型。在这两种情况下,都会调用pf
所指向的函数。
其他指针和指向函数的指针之间有什么区别??
主要区别在于函数指针指向函数,而指向对象的指针指向对象。