| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2764 人关注过本帖
标题:为什么常量也可以修改
只看楼主 加入收藏
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
要是把const 当做define的 用法来用的话(就是只是 定义个常量的话) 是不分配空间的
除非 是把const用在函数参数或返回类型时 才分配空间
2008-10-21 20:17
情结
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-10-19
收藏
得分:0 
ii的只是3,ii是没变的
你说的输出结果是4是因为*p所指向的 对象变为4,而不是ii变成了4
ii是3没变

天行健,君子以自强不息
2008-10-22 19:49
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 22# 情结 的帖子
但是p指向了 ii 的地址
为什么他们的值是不一样的呢?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-25 16:09
情结
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-10-19
收藏
得分:0 
回复 23# vfdff 的帖子
int *pi = (int *)ⅈ
 *pi = 4;
首先pi是一个整形的指针,第一条是将pi指向ii,*pi 为3
第二条是将pi指向另外一个整形的对象4,ii与4是两个不同的整形对象;在内存中不是同一数据单元,*pi = 4;并不是将4赋值给ii,而是改变pi的指向
 int *pi = (int *)&ii;  cout<<ii<<*p<<endl;    //结果为3  3
 *pi = 4;   cout<<ii<<*p<<endl;    //结果为  3   4

[[it] 本帖最后由 情结 于 2008-10-25 17:46 编辑 [/it]]

天行健,君子以自强不息
2008-10-25 17:44
lockhawk
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2008-9-17
收藏
得分:0 
回复 24# 情结 的帖子
但是也很奇怪啊:为什么pi指向了4,但输出地址的时候pi和&ii是一样的。
#include<iostream.h>
int main()
{
    const int ii = 3;
    int *pi = (int *)&ii;
    *pi = 4;
    cout<<ii<<endl<<*pi<<endl<<&ii<<endl<<pi<<endl;
return 0;
}

人生最大痛苦:虽然不明白你们说什么,但还是要听!
2008-10-25 18:14
lyshyhuangli
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-7-24
收藏
得分:0 
不懂啊
2008-10-26 21:55
youhm
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2006-5-25
收藏
得分:0 
[bo][un]lockhawk[/un] 在 2008-10-25 18:14 的发言:[/bo]

但是也很奇怪啊:为什么pi指向了4,但输出地址的时候pi和&ii是一样的。
#include
int main()
{
    const int ii = 3;
    int *pi = (int *)&ii;
    *pi = 4;
    cout

实际上pi的指向并没有变,好像是初始的时候给常量ii分配了一个副本空间,这个空间可以被修改,但涉及到读取ii的数据时,并不是从这个副本读取,而是直接读出定义的常量值。
2008-10-26 23:14
快速回复:为什么常量也可以修改
数据加载中...
 
   



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

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