| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1806 人关注过本帖
标题:常量的问题不太懂
只看楼主 加入收藏
小牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:434
专家分:8
注 册:2006-10-1
结帖率:81.48%
收藏
 问题点数:0 回复次数:22 
常量的问题不太懂
各位大哥:
在C语言中定义一个常量是define N 5

1.那么这个常量在内存中占用不占用空间呢?
如果占用的话:

2.一个变量可以通过变量名获得其地址,常量
怎样获得其在内存中的地址。

3.这与在java中定义一个常量有没有什么本质的区别。
搜索更多相关主题的帖子: 常量 
2006-12-07 17:54
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
define N 5这个是个宏,在预编译的时候会将所有的N替换成5, 并不占用内存!
常量在内存中没有地址!
java我不懂!呵呵!

该学习了。。。
2006-12-07 18:25
游乐园
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:671
专家分:0
注 册:2006-11-1
收藏
得分:0 
没错 define N 5
是宏定义 是预编译时做的工作 没有分配内存空间

而 C++和java种中的常量是分配在内存中静态数据区

c++: const int a=1;
java: final int a=1;

如果查看常量的地址取他们的引用值就可以了

unicorn-h.spaces. ◇◆ sava-scratch.spaces.
2006-12-07 19:16
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 
以下是引用zhanghuan_10在2006-12-7 18:25:39的发言:
define N 5这个是个宏,在预编译的时候会将所有的N替换成5, 并不占用内存!
常量在内存中没有地址
java我不懂!呵呵!

宏不占用内存,
但常量不一定,如字符串常量


2006-12-08 19:30
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
所有的常量都应该占内存吧,但define是宏定义,#define N 5,不是常量

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-08 19:37
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 
以下是引用卧龙孔明在2006-12-8 19:37:50的发言:
所有的常量都应该占内存吧,但define是宏定义,#define N 5,不是常量

宏定义也算常量吧.
常量都应该占内存
如c++: const int a=1;
int b=a;
好象不占,直接替换.


2006-12-08 19:46
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
以下是引用卧龙孔明在2006-12-8 19:37:50的发言:
所有的常量都应该占内存吧,但define是宏定义,#define N 5,不是常量

因为5是常量,N就是5的另一个名字罢了,5会写到程序的静态数据区,
也就占用了内存,所以N也可以说占用了内存(在汇编层5是一个立即数).

斑竹也知道吧,只是没有用这种方式理解

2006-12-08 21:26
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 
讲一下C++里内存的五大分区吧:
--------------------------------------------------
栈,由编译器在需要的时候分配,不需要的时候自动清除。通常是局部变量、函数参数等。
--------------------------------------------------
堆,由new分配的内存块,用delete去释放。
--------------------------------------------------
自由存储区,由malloc等分配的内存块,用free来释放,和堆是十分相似。?
--------------------------------------------------
全局/静态存储区,存储全局和静态变量。
--------------------------------------------------
常量存储区。他们里面存放的是常量,不允许修改。

C的内存分娶应该是一样的吧~~~我只知道C++的~~~看了分区应该能明白常量和内存的关系了吧?
2006-12-09 08:08
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
得分:0 
预编译不占用内存空间,如果定义const int a=5;就占用内存空间了(const在预编译时会出错)
2006-12-09 11:07
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
呵呵!对 !字符串常量占用内存啊!

该学习了。。。
2006-12-09 12:13
快速回复:常量的问题不太懂
数据加载中...
 
   



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

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