遇到一道C++难题求助

void Print(int Fun(int)) { std::cout << Fun; }
为什么这里面函数指针int (*Fun)(int)可以写成int Fun(int)?最好能告诉我一下在标准的什么地方。#C/C++#
全部评论
我找到了《Working Draft, Standard for Programming Language C++》N3337里面5.2.2函数调用的第七条。翻译过来就是在函数形参列表中,若形参类型是函数类型 F,则它被替换成类型“F 的指针”。
点赞 回复 分享
发布于 2020-08-07 19:28
有点类似数组名作参数退化为指针
点赞 回复 分享
发布于 2020-08-07 19:00
函数,指代的就是一段指令。如果不使用指针,感觉好像要把函数拷贝一份,但是函数是不能拷贝的,函数编译完了之后就放在代码段。所以,就算不加 `*` 函数也应该是向指针一样的东西。加不加指针符号,编译器都把它当作函数来看。
点赞 回复 分享
发布于 2020-08-07 18:45
因为因为历史原因下面这三个函数是一样的: int Print1(int (*Fun)(int)){     cout << Fun(0); } int Print2(int (Fun)(int)){     cout << Fun(0); } int Print3(int Fun(int)){     cout << Fun(0); }
点赞 回复 分享
发布于 2020-08-07 18:40

相关推荐

03-06 17:17
门头沟学院 Java
程序员小白条:专升本提前注明,不然=白费,到最后面完,告诉你不能过,,还有这开源怎么前端大于后端....短链只写三个功能亮点的话,而且还是经典项目,反而可以不用,要么多写点东西,每个实习,项目都标准3点....
26届求职交流
点赞 评论 收藏
分享
在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务