首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向C++中函数的指针,(* pf )()和pf是否相同?

指向C++中函数的指针,(* pf )()和pf是否相同?
EN

Stack Overflow用户
提问于 2019-10-23 23:57:19
回答 1查看 384关注 0票数 0

我是C++的初学者,很难理解函数的指针:

代码语言:javascript
复制
main()
{
    double pam(int);
    double (*pf)(int);
    pf = pam;            
    double x = pam(4);    
    double y = (*pf)(5); 
    double y = pf(5);
} 

(*pf)()pf()怎么可能是相同的,其中pf是指向函数的指针?

其他指针和指向函数的指针有什么区别??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-24 00:03:40

,如果pf是指向函数的指针,那么*pf()和pf()如何是相同的呢?

它们是不一样的(因为运算符优先)。如果您的意思是(*pf)()pf()实际上是相同的,那么这是因为语言的规则是这么说的。具体而言,规则规定:

expr.call

函数调用是后缀表达式,后面是括号,包含一个可能为空的逗号分隔的初始化器-子句列表,这些子句构成函数的参数。后缀表达式应具有函数类型或函数指针类型。对于对非成员函数或静态成员函数的调用,后缀表达式应该是引用函数的lvalue (在这种情况下,函数到指针的标准转换(conv.func)在后缀表达式上被抑制),或者具有函数指针类型。

对于(*pf)(),表达式(*pf)是引用函数的lvalue,而对于pf(),表达式pf具有函数指针类型。在这两种情况下,pf所指向的函数都被调用。

其他指针和指向函数的指针有什么区别??

主要区别在于函数指针指向函数,指向对象的指针指向对象。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58532376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档