遇到一道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

相关推荐

09-24 18:25
门头沟学院 Java
点赞 评论 收藏
分享
珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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