| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 565 人关注过本帖
标题:const 常量与 真正的常量 有什么区别
只看楼主 加入收藏
Ghost_Knight
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2010-9-25
结帖率:75%
收藏
 问题点数:0 回复次数:4 
const 常量与 真正的常量 有什么区别
如题
2011-04-20 15:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
告诉你个名词“编译期常量”
顾名思义,在编译时就可以确定的值,才称为 编译期常量
2011-04-20 15:57
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
const常量 是“不应该改动的变量”的意思,也叫常量变量。真正的常量就是个定值,不是变量。
2011-04-20 17:42
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
const在定义的时候就必须赋值,而且以后不许改变其值!

   唯实惟新 至诚致志
2011-04-20 18:32
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
一个小实验可以说明,const常量内存可改变,但不能改在编译期已经定下来的。
const int i = 1000;//声明定义常量
int t = i;//声明定义变量 编译时,它就变成了int t = 1000; 从汇编可以看到这一点
int* p = (int*)&i;//把常量内存地址赋给了p  *p为1000
*p = 10;//我改变了常量的内存地址,下面是不是赋值改变了呢?
//这时的*p为10
t = i;  //不好意思,t还是1000,并不是10,因为在编译时,这里就是 t = 1000,就好象是在编译期用1000替换了i
t = *p; //这时t才改变了。
上面代码并没有什么意义,只是为了更好的了解const,写好这些代码,在VC的调试状态下加断点,中断后进入反汇编
窗口,看这几句代码的汇编,如果了解一点汇编语言相信是很容易看出来,应该有i符号的地方,都被数字1000替换掉了
所以,const常量只是在编译期不可改变,在运行期通过指针可以间接改变常量所在内存的值,但这样做并没有什么实际
意义,除非有人用指针来调用const常量,那你就可以利用这一点做一些坏事儿。
2011-04-20 22:26
快速回复:const 常量与 真正的常量 有什么区别
数据加载中...
 
   



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

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