社区
C语言
帖子详情
用&取地址时,为什么可以对诸如"Hello"的字符串常量使用,却不能对#define PI 3.1415926的浮点型常量使用?
Asskicker_Ryan
2014-11-30 02:10:50
RT
例如
&"Hello"是合法的,而 &PI 则不行?
...全文
455
9
打赏
收藏
用&取地址时,为什么可以对诸如"Hello"的字符串常量使用,却不能对#define PI 3.1415926的浮点型常量使用?
RT 例如 &"Hello"是合法的,而 &PI 则不行?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luotuo44
2014-12-01
打赏
举报
回复
"Hello"占用了内存,所以有内存地址。而仅仅是一个值的话,是不占用内存的。没有占用内存,当然就没有内存地址可言。 如果是const double PI = 3.1415925;那么PI就是一个变量,需要占用内存,此时就有地址可言了。
赵4老师
2014-12-01
打赏
举报
回复
编译期 运行期
「已注销」
2014-12-01
打赏
举报
回复
#4一语道破
ZG
2014-12-01
打赏
举报
回复
分配了实实在在的内存,才能取到地址, #define PI 3.14.... 在预处理阶段PI就直接被替换成3.14..了,程序是看不到PI的,它所知道的就是3.14...这个常量数字 const double PI = 3.1415925,PI是一个变量,double型的,编译器为其分配了空间,只不过由于有const修饰这个空间只读 hello,字符串常量,编译器为其在文字常区分配空间,同样只可读 想要完全了解,写一个简单的,然后反汇编
wang0635
2014-11-30
打赏
举报
回复
&PI 经过编译预处理后变成了 &3.1415925 而"Hello"是在内存中连续存放的
relaxisland
2014-11-30
打赏
举报
回复
因为 #define PI 3.1415926 不是常量,是宏定义 过了编译阶段,在程序运行阶段,是不存在的
Asskicker_Ryan
2014-11-30
打赏
举报
回复
引用 2 楼 zhouchongzxc 的回复:
这个很简单的吧 movl $10, %edx 你知道 10 会放在哪里吗?
小弟菜鸟请指教 movl $10, %edx是什么意思。。。看不懂
ChongQingJin28
2014-11-30
打赏
举报
回复
这个很简单的吧 movl $10, %edx 你知道 10 会放在哪里吗?
Asskicker_Ryan
2014-11-30
打赏
举报
回复
经过试验发现 用#define 定义的PI 不能使用&符号取地址, 而用const double PI = 3.1415925;就可以。请问是为什么呢?
C语言期末考试全部知识点复习资料--重点常考点.pdf
C语言期末考试全部知识点复习资料--重点常考点
c++宏的
使用
总结.pdf
c++宏的
使用
总结,非常实用经典,详细讲解了宏的
使用
和特性
C语言字符型数据详解
详细介绍了C语言字符型数据的应用等,包括字符
常量
,
字符串
常量
,转移字符,符号
常量
,字符变量等的定义
使用
等。
第基本数据类型运算符与表达式PPT学习教案.pptx
第基本数据类型运算符与表达式PPT学习教案.pptx
C++与操作系统等面试题7
C++与操作系统等面试题7
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章