| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1663 人关注过本帖, 1 人收藏
标题:有点疑问,请教大家。小女子谢谢
取消只看楼主 加入收藏
wang8114020
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-12-12
收藏(1)
 问题点数:0 回复次数:2 
有点疑问,请教大家。小女子谢谢
1、
int main()
{
    const int a=0;
    int *p=(int*)&a;

    *p=3;
    printf("a=%d,*p=%d\n",a,*p);

    return 0;
}
输出结果:a=0,*p=3   
2、
int main()
{
     int a=0;
    const int *p=&a;

    a=3;
    printf("a=%d,*p=%d\n",a,*p);

    return 0;
}
输出结果:a=3,*p=3
1)为什么前面的a不是等于3,我认为a所在的内存地址里的值已经改为3了,按道理a对应的值也应该 是3.或许你们会认为因为a是const变量,那好看下面
2)按照第一题的输出结果,那为什么第二题*p的值又改变为3了呢??它指向的值不也是const的。
请教高手解释下,这个两个结果我认为有矛盾之处。
搜索更多相关主题的帖子: int 小女子 疑问 内存 const 
2008-05-05 11:41
wang8114020
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-12-12
收藏
得分:0 
回复 6# 的帖子
谢谢!
2008-05-05 15:59
wang8114020
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-12-12
收藏
得分:0 
回复 4# 的帖子
在vc下编译,加了volatile,可结果a还是为0,而不是3
2008-05-05 16:08
快速回复:有点疑问,请教大家。小女子谢谢
数据加载中...
 
   



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

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