CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

一个很菜很菜的问题

楼主yoking2002()2002-10-10 15:24:07 在 VC/MFC / 基础类 提问

看以下代码  
   
  const   int   t   =   10;  
  int*   aa   =   (int*)&t;  
  *aa=   100;  
   
  aa应该指向了t所在的内存。t是分配了内存的  
  在VC中观察内存显示t是被改变了的  
  但是在使用t时,其值并没有改变  
  刚接触c++,其中原理不是太清楚  
  各位大虾能不能给解释一下其中的原因 问题点数:100、回复次数:4Top

1 楼stonespace(stonespace)回复于 2002-10-10 15:34:15 得分 35

t应该等于100,const只是编译的时候起作用,如果强制类型转换,也可以改变它的值。  
   
  使用t的时候值没有变,可能是因为编译优化的结果,把用到t的地方都用常数10代替。Top

2 楼qsfsea(忍)回复于 2002-10-10 15:39:29 得分 30

文档区有篇文章是专门讲这个的,你去看看!Top

3 楼wanglei888(阿笨猫)回复于 2002-10-10 15:50:02 得分 35

const   int   t   =   10;  
  //   这一句声明了一个常量t,编译器一般不对t分配内存地址,而是在编译之前  
  //   将把所有的t都替换成10  
   
  int*   aa   =   (int*)&t;  
  //   这一句是因为要和c兼容的原因才被允许的,编译器为t分配了内存,并用10  
  //   初始化  
   
  *aa=   100;  
  //   为t分配的内存的值变为100,   ,但这并不影响预编译过程中用10替换t  
  Top

4 楼yoking2002()回复于 2002-10-10 16:26:23 得分 0

搞明白了  
  如果在运行时为t赋值,可以看到t的值却是被改动了Top

相关问题

  • 很菜很菜的问题!
  • 很菜很菜的问题!
  • 我很菜的。
  • kde很菜吗?
  • 很菜问题
  • 一个很菜很菜的菜鸟的很菜的问题.
  • 问一个很菜很菜的问题??
  • 一个很菜很菜的问题!
  • 又一个很菜很菜的问题
  • 很菜很菜的鸟的问题

关键词

  • 内存
  • 编译
  • 值
  • aa
  • 改变
  • const

得分解答快速导航

  • 帖主:yoking2002
  • stonespace
  • qsfsea
  • wanglei888

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo