学习日记 – 《C陷阱与缺陷》 – Day1
来源:互联网 发布:淘宝直播怎么看回放 编辑:程序博客网 时间:2024/06/05 02:31
第二章 语法“陷阱”
2.1 理解函数声明(有点复杂)
float *g();float (*h)();
按照我们常规的思维一眼看上去,这两句代码应该是一样的吧,但事实上是完全不同的
第一句代码,g() 其实是等价于 (g()) ,意思是g()是一个返回值为 指向浮点数的指针 的函数
第二句代码, h是一个函数指针, 其所指向的函数的返回值为 浮点类型
原因在于 ()
的结合优先级是高于*
的
然后,我们可以推理得到一个强制类型转换,这是一个“指向返回值为浮点类型的函数的指针”的类型转换符
((float)(*)())
事实上下面一句代码就是上一句的简写版
(*h)()h()
根据上述的知识理解一下这个吧
(*(void(*)())0)()
Hit:
typedef void (*funcptr)();(*(funcptr)0)();
0 0
- 学习日记 – 《C陷阱与缺陷》 – Day1
- 学习日记 - 《C陷阱与缺陷》 - Day 0
- C陷阱与缺陷读书日记
- c陷阱与缺陷 学习笔记
- C缺陷与陷阱学习笔记
- 《C陷阱与缺陷》学习笔记
- C陷阱与缺陷学习总结
- c陷阱与缺陷学习笔记
- C陷阱与缺陷学习笔记
- 《c陷阱与缺陷》学习总结
- 《C陷阱与缺陷》学习笔记
- C陷阱与缺陷学习笔记
- C陷阱与缺陷学习笔记
- 《C陷阱与缺陷》学习笔记(上)
- C语言陷阱与缺陷 第一章学习
- c陷阱与缺陷
- 《c陷阱与缺陷》
- C陷阱与缺陷
- java面试题笔试题之选择与查找
- MAVEN添加依赖
- Python for Data Analysis (10)
- 定时关机的一些参数
- 正则表达式
- 学习日记 – 《C陷阱与缺陷》 – Day1
- 读懂jquery事件代理
- python中list的相关方法
- 1、in与exists之争(10g);2、in与exists之争(11g)
- PHP输出echo、print、print_r、printf、sprintf、var_dump的区别比较
- Android中的MVP,值得你一看
- JS之联动菜单简单实例
- android 属性动画 介绍
- JS高级基础阶段知识总结