| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 919 人关注过本帖
标题:问一个关于const变量的问题
取消只看楼主 加入收藏
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
问一个关于const变量的问题
==================================================================================
编译器通常不为普通const 只读变量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率也很高。例如:

#define M 3 //宏常量
const int N=5; //此时并未将N 放入内存中
......
int i=N; //此时为N 分配内存,以后不再分配!
int I=M; //预编译期间进行宏替换,分配内存
int j=N; //没有内存分配
int J=M; //再进行宏替换,又一次分配内存!

=================================================================================
const 修饰符也可以修饰函数的返回值,返回值不可被改变。例如:
const int Fun (void);
==================================================================================
以上是我在教程上看到的,有几个问题问一下,int i=N /*此时为什么是为N分配内存,而不是为i ?*/按道理来说定义一个变量,应该是为那个变量分配一段内存空间啊,为什么这个时候是为const变量N分配空间,而不是为i分配


int j=N /*为什么此时没有内存分配?*/ 定义一个变量的时候不是应该要给他分配内存空间的么 为什么他这说没有内存分配


什么叫返回值不可被改变?不能理解这句话,返回值就是返回一个值,为什么说什么改变不改变的?希望明白的能举例说明一下,学C时间还不长,所以存在不少问题,请多指教

[ 本帖最后由 果沫 于 2013-1-30 15:21 编辑 ]
搜索更多相关主题的帖子: 内存 编译器 
2013-01-30 15:09
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 3楼 TonyDeng回复 2楼 rjsp
好吧= =  那能帮忙解释下第二个问题什么意思么,什么叫返回值不可被改变
2013-01-30 15:49
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 6楼 TonyDeng
我刚刚试了一下
fun()为一个被const修饰的函数
int a=fun();
没出错
但按你的说法应该要用
const int a=fun();
才行吧
2013-01-30 16:30
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
回复 8楼 TonyDeng
  谢谢啦,你这么一说清楚一些了,刚学经常会遇到些理解不了的问题。
2013-01-30 16:43
果沫
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:198
专家分:960
注 册:2013-1-30
收藏
得分:0 
嗯 明白啦
2013-01-30 17:01
快速回复:问一个关于const变量的问题
数据加载中...
 
   



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

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