一直对函数指针的概念一知半解的,于是搜索了一把,发现几个帖子讲解不错,就帖子这里了.
病例:不理解C/C++的函数指针
病人:医生,我折腾了许久,无法理解函数指针。
中医:能意识到自己不理解,不错。那么你说说你目前的理解。函数指针是什么?
病人:函数指针是指向函数的指针。
中医:那么函数是什么?
病人:函数就是函数。
中医:不是指向函数的指针?
病人:自然不是。
中医:那函数怎么可以赋值给函数指针?难道int可以赋值给int* ?
病人:这个。。。。。。
中医:逻辑不通了吧?
病人:是啊,怎么回事哩?
中医:这个问题先搁置一下,我问你,什么是指针?
病人:是放地址的变量。
中医:函数指针里面放的什么?
病人:函数入口地址。
中医:那么函数指针就是放函数入口地址的变量?
病人: (小心地)我同意。
中医:函数是放函数入口地址的常量。
病人:哇!这样一来就好解释了!函数赋值给函数指针就像把常量赋值给同类型变量!
中医:还有问题吗?
病人:有,"函数是放函数入口地址的常量。"这句话不通啊。
函数是放自己入口地址的东西?
中医:孺字可教。这里"函数入口地址"是一个词,不能拆。真正的函数,无非是一块代码,
C/C++中没有描述"一块代码"的东西,
只有描述"一块代码"的入口地址的东西,函数及函数指针。
病人:我懂了,"函数指针是指向函数(1)的指针"和"函数(2)不是指向函数(3)的指针"的矛盾,
出自"函数(1)"的是你刚才说的"真正的函数",
函数(2)(3)指的C/C++语法意义上的"函数",两码事!
中医:嗯,有道理。那么还有问题吗?
病人:"函数指针是指向函数的指针。"这句话固然误导人,不过C/C++的语法,也起到了推波助澜的作用。
//////////////////////////////////
#include
typedef int (*FN_HAHA)();
int real_haha()
{
return printf("haha/n");
}
void main(int argc, char* argv[])
{
FN_HAHA haha=real_haha;
real_haha();
(*haha)();
}
//////////////////////////////////
既然 haha 和 real_haha是一个层次上的东西,
那么调用的时候为什么一个 "real_haha();",
一个(*haha)()哩?很明显是在搞分化,搞脑子。
医生:连C/C++语法你都敢批评,强的!
正如你所说,这不是好的语法,所以现在的编译器,比如VC和gcc,
都允许用 haha();来代替传统的(*haha)();你44就知道了。
至于书上都写(*haha)();我只能说,
这个问题我自己也被书害了很久,最后扔了书自己想通的。
病人:我的病好了,我回去也把书扔了。
分享到:
相关推荐
前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入) 管理员账号:abo 管理员密码:abo 如果您要学会调试运行,一定要去看运行教学 springboot程序运行教学地址: 链接:...
This guide provides you with the information required to install Standalone Sentry. Standalone Sentry is a component of a MobileIron deployment. A Standalone Sentry deployment requires that you have ...
covid19-grapher:我构建了一个应用程序,该应用程序显示了跨不同州的各种病例和死亡率的交互式可视化:http://shivaninanda-covid19-grapher.herokuapp.com
WS/T 500.40-2016电子病历共享文档规范 第40部分:住院病程记录 疑难病例讨论记录 WS/T 500.41-2016电子病历共享文档规范 第41部分:住院病程记录 交接班记录 WS/T 500.42-2016电子病历共享文档规范 第42...
COVID-19数据徽章 网址: https://covid19-badges.herokuapp.com/confirmed/latest : https://covid19-badges.herokuapp.com/confirmed/latest 用法: ![Covid-19 Cases]... 用法: !... (请参阅问题 ) ...
基于C++的诊所管理系统 1、普通用户登录,可以查看自身的病例,以及医生的信息(如姓名、性别、年龄、诊费、科室、职称)并且可以实现预约医生 2、医生登录,可以进行增加患者信息(添加患者信息:姓名、性别、年龄...
SSM 毕业设计,SSM 课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计...
covid19plot.py ... covid19plot.py产生以下图形: 每个国家/地区在一个文件中的法线坐标图-输出: : 每个国家/地区在一个文件中的对数轴图-输出: : ... 加利福尼亚所有县的每日新病例被绘制到usa-ca/county-out
1、用户通过输入病症描述,系统自动返回给用户最相似的病例信息和治疗方案。 2、能搜索、展示一个或全部病例信息。 二、编译环境: 编译器:Pycharm2022.2.1 全栈框架:Flask2.2.5 编程语言:Python3.7 深度...
Ray Wenderlich ios 教程系列,第四版,第三部分,很基础,个人认为是ios最佳入门读物
主要功能:登陆注册、系统设置、宠物管理、宠物列表、宠物健康史、宠物病例史、预约管理、日常管理、宠物健康、宠物档案等 项目使用java SpringMVC、springboot mybatis、layui为核心技术编写 ——————————...
管理员功能有,个人中心,用户管理,老人管理,食药记录管理,身体指标管理,体检病例管理,突发情况管理,留言管理等。用户有有个人中心,老人管理,食药记录管理,身体指标管理,体检病例管理,突发情况管理,留言...
管理员功能有,个人中心,用户管理,老人管理,食药记录管理,身体指标管理,体检病例管理,突发情况管理,留言管理等。用户有有个人中心,老人管理,食药记录管理,身体指标管理,体检病例管理,突发情况管理,留言...
hospital-System Qt实现 医院信息管理系统 1.语言C++,开发平台QT,数据库Mysql 2.软件设计包含医生、病人、药物和病例症状等的信息存储和管理 3....C/C++ 管理系统 QT MFC 数据结构 课程设计 MySQL/数据库
工作目的:确定扎嘎齐格大学医院收治的儿童中毒病例的发生率和方式。 主题和方法:这是一项针对18岁以下儿童的回顾性研究,已提交给Zagazig大学医院急诊科。 该研究于2018年1月初至2018年12月底进行,共624例急性...
基于LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战使用的数据集。实操地址:https://blog.csdn.net/qq_39813001/article/details/136227790?spm=1001.2014.3001.5501
基于LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战使用的数据集。实操地址:https://blog.csdn.net/qq_39813001/article/details/136227790?spm=1001.2014.3001.5501
基于LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战使用的数据集。实操地址:https://blog.csdn.net/qq_39813001/article/details/136227790?spm=1001.2014.3001.5501
败血性流产通常是由于使用非无菌器械或材料进行子宫内操作而引起的;... 我们报告了一名28岁患者的子宫内膜炎复杂流产和肩膀双侧脓肿的临床病例,需要手术引流和抗生素治疗。 鉴定出的细菌是对头孢曲松敏感的大肠杆菌。
墨西哥有关COVID-19病例的信息。 :information: 信息 网站: : 用于数据收集和分析的存储库: : :memo: 资料来源: :United_Kingdom: 英文版 墨西哥的COVID-19 :Mexico: 有关墨西哥COVID-19病例的信息。 ...