| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1490 人关注过本帖
标题:讨论一个程序(常量数组和普通常量const)
取消只看楼主 加入收藏
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
结帖率:100%
收藏
 问题点数:0 回复次数:4 
讨论一个程序(常量数组和普通常量const)
测试程序:

#include <iostream>
using namespace std;
int main()
{
int const c1=4;
int const c2[1]={2};
*(int *)&c1=5;
*(int *)&c2[0]=9;
cout<<c1+c2[0]<<endl;
return 0;
}


结果如何?
搜索更多相关主题的帖子: 常量 const 
2007-11-18 19:00
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

谢欣雨的 天仙子


雁无留踪之意,水无取影之心
2007-11-18 20:13
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用cosdos在2007-11-18 21:45:44的发言:

我使用的是 DEV-C++

不优化的情况下 13
开启进一步 优化的情况下为 6

开启优化的情况下作为立即数处理。只限于符合立即数要求的数。



这可不一样,你没发觉c1没有改变,而c2[0]改变了吗?


雁无留踪之意,水无取影之心
2007-11-18 22:07
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我用的是*(int *)&amp;c2[0],c2[0]是一个const 常量

[此贴子已经被作者于2007-11-18 22:33:25编辑过]



雁无留踪之意,水无取影之心
2007-11-18 22:32
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
以下是引用cosdos在2007-11-19 12:10:48的发言:
常量应放在 常量数据段,但编译器对常量数组却没有做到这点。
所以才有此问题。

[刚刚想到的]

书上提到过 "字符串" ,但没有把 const 和 字符串想到一起。


我最开始也是这样认为的,但我把它们的地址输出后是在一个数据段的

const常量数组和字符串又不同,你对字符串进行这样的操作是非法的


雁无留踪之意,水无取影之心
2007-11-19 13:34
快速回复:讨论一个程序(常量数组和普通常量const)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027938 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved