标题:常量问题...
只看楼主
williamtg
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2009-8-26
结帖率:100%
已结贴  问题点数:10 回复次数:5 
常量问题...
怎样改变常量?
搜索更多相关主题的帖子: 常量 
2009-09-20 14:26
williamtg
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2009-8-26
得分:0 
还有,大家觉得《The C++ Programming language》怎么样?
2009-09-20 14:33
gz81
Rank: 5Rank: 5
等 级:职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
得分:10 
以下是引用williamtg在2009-9-20 14:26的发言:

怎样改变常量?
常量没法改变。


下面代码好像是改变了常量的值,其实是假像。在cout<<*p<<endl;后面加一句cout<<i;就看到了。


#include <iostream>
using namespace std;

int main()
{
    const int i=1;
    int *p=(int*)&i;
    *p=2;
    cout<<*p<<endl;
    //cout<<i;
}

我的空间:http://student./space.php?uid=116706
2009-09-20 15:36
williamtg
Rank: 2
等 级:论坛游民
帖 子:5
专家分:20
注 册:2009-8-26
得分:0 
.....
这样啊....
2009-09-20 15:51
gz81
Rank: 5Rank: 5
等 级:职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
得分:0 
以下是引用williamtg在2009-9-20 14:33的发言:

还有,大家觉得《The C++ Programming language》怎么样?
这本书被称为“c++专家入门教程”,不适合入门看的,像看天书。

我的空间:http://student./space.php?uid=116706
2009-09-20 16:02
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
得分:0 
常量无法改变,但不是绝对不能的。
三楼的例子,常量i所在内容的地址内容确实在*p=2时,被改变了,但为什么cout<<i却仍是1呢,这是因为这句代码在编译期就把常量i表示的数值放入了二进制代码里,也就是说在运行期,cout<<i的汇编码里没有和i常量有关的存在,也就无法表现出常量i被改变了,但它的确已经改变了,因为常量i在数据段里是有地址的,而这个地址被p得到,如果存在运行期编译(脚本)的话,在运行时对cout<<i再做一次编译,这时打出来的值一定是改变后的量。
基于以上原因,脚本里没有常量,只有变量。
2009-09-20 22:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-286275-1-1.html




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

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