问个const的问题

jiangnancaizi 2008-12-08 02:48:05
1. java中,const 常量是存放在哪个区? 静态存储区,常量区还是堆栈区? const static又是存放在哪个区?
2. c和c++中,局部const常量是存放在什么区,全局又是存放在什么去,局部和全局得const static又是存放在什么区
...全文
146 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangnancaizi 2008-12-10
  • 打赏
  • 举报
回复
????
VCRWX 2008-12-10
  • 打赏
  • 举报
回复
1. java中,const 常量是存放在哪个区? 静态存储区,常量区还是堆栈区? const static又是存放在哪个区?
首先你要确定java中有无const,它是以final出现的,如果你在定义中没有用到new,她是存在与静态内存栈中,const static存在与池中
2. c和c++中,局部const常量是存放在什么区,全局又是存放在什么去,局部和全局得const static又是存放在什么区
c和c++中的const是有区别的,c中的const是有内存的,也就是一个不能改变值的普通常量.
C++中的const有时候是不占用内存的,至于什么时候站用内存,分配在什么地方还要分情况,建议你看一看<<C++编程思想>>
恋空 2008-12-09
  • 打赏
  • 举报
回复
学习
ZangXT 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jiangnancaizi 的回复:]

那能否回答我的第二,三个问题

2. c和c++中,局部const常量是存放在什么区,全局又是存放在什么去,局部和全局得const static又是存放在什么区 ?
3. 我在网上看到一个题目,说const char str3[] = "abc";是存放在堆栈区, const char* str6 = "abc";则是放在常量区(好像也叫做只读区),为什么呢


[/Quote]
对于C++写的可执行程序:
全局/静态数据区存储全局变量及静态变量(包括全局静态变量和局部静态变量)。
常量数据区中存储程序的常量字符串等。
栈中存储局部变量,参数等,堆存储动态分配的数据(通过new,delete,malloc()和free())来控制。
代码区。
你可以在代码里面分别定义各种类型的变量,然后察看其地址,看看是否相连就知道了。
jiangnancaizi 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 haoxiongok 的回复:]
引用 11 楼 jiangnancaizi 的回复:
那const是放在常量区么? 最好直接回答我的2,3问题,谢谢^_^

应该和静态变量还有字符串常量放在一起吧,统称为数据区
[/Quote]
那是否可以理解为 : 那数据区是否又分为静态数据区和常量区,静态数据区放全局变量和static变量,常量区放常量字符串和const修饰的常量??
haoxiongok 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiangnancaizi 的回复:]
那const是放在常量区么? 最好直接回答我的2,3问题,谢谢^_^
[/Quote]
应该和静态变量还有字符串常量放在一起吧,统称为数据区
jiangnancaizi 2008-12-09
  • 打赏
  • 举报
回复
那const是放在常量区么? 最好直接回答我的2,3问题,谢谢^_^
jiangnancaizi 2008-12-08
  • 打赏
  • 举报
回复

那能否回答我的第二,三个问题

2. c和c++中,局部const常量是存放在什么区,全局又是存放在什么去,局部和全局得const static又是存放在什么区 ?
3. 我在网上看到一个题目,说const char str3[] = "abc";是存放在堆栈区, const char* str6 = "abc";则是放在常量区(好像也叫做只读区),为什么呢

shenjie1989 2008-12-08
  • 打赏
  • 举报
回复
java并没有定义所谓的静态存储区,C++也没有
ZangXT 2008-12-08
  • 打赏
  • 举报
回复
刚学不用过于关注这些问题,不是几句话能说明白的
有些精力了去看《深入java虚拟机》这样的书。
不要相信一个叫做《java栈与堆》这个帖子的话,够了。
jiangnancaizi 2008-12-08
  • 打赏
  • 举报
回复
java的data segment中是否存放了static和final变量?
jiangnancaizi 2008-12-08
  • 打赏
  • 举报
回复
哦,我彻底晕了,做c得时候我知道静态存储区,堆区,堆栈区..........
好像内存中又分代码区,堆栈区,数据区
这些都是啥关系? java中为啥没有了静态存储区呢? 难道 java中得final static变量也是存放在数据区?
哪位高手来理顺一下这些关系啊
ZangXT 2008-12-08
  • 打赏
  • 举报
回复
java并没有定义所谓的静态存储区。
jiangnancaizi 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 meneil 的回复:]
Java中并没有const关键字,但是也将const作为了保留关键字,取而代之的是final关键字,代表定义一个常量,存于内存的data segment
[/Quote]

晕死,是我犯了低级错误了
顺便问一下,数据区是不是就是静态存储区?
meneil 2008-12-08
  • 打赏
  • 举报
回复
Java中并没有const关键字,但是也将const作为了保留关键字,取而代之的是final关键字,代表定义一个常量,存于内存的data segment

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧