我是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是指向函数的指针?
其他指针和指向函数的指针有什么区别??
发布于 2019-10-24 00:03:40
,如果pf是指向函数的指针,那么*pf()和pf()如何是相同的呢?
它们是不一样的(因为运算符优先)。如果您的意思是(*pf)()和pf()实际上是相同的,那么这是因为语言的规则是这么说的。具体而言,规则规定:
expr.call
函数调用是后缀表达式,后面是括号,包含一个可能为空的逗号分隔的初始化器-子句列表,这些子句构成函数的参数。后缀表达式应具有函数类型或函数指针类型。对于对非成员函数或静态成员函数的调用,后缀表达式应该是引用函数的lvalue (在这种情况下,函数到指针的标准转换(conv.func)在后缀表达式上被抑制),或者具有函数指针类型。
对于(*pf)(),表达式(*pf)是引用函数的lvalue,而对于pf(),表达式pf具有函数指针类型。在这两种情况下,pf所指向的函数都被调用。
其他指针和指向函数的指针有什么区别??
主要区别在于函数指针指向函数,指向对象的指针指向对象。
https://stackoverflow.com/questions/58532376
复制相似问题