| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1450 人关注过本帖
标题:有关栈和文字常量区的问题
只看楼主 加入收藏
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
结帖率:50%
收藏
 问题点数:0 回复次数:3 
有关栈和文字常量区的问题
char s1[] = "aaaaaaaaaaaaaaa";s1的区别在于其空间是在栈上分配的,所以在程序中你可以改变字符串的内容
char *s2 = "bbbbbbbbbbbbbbbbb";s2指向的是文字常量区,所以在程序中你如果改变字符串内容 ,就会报错,这些都没有问题。
不过网上说aaaaaaaaaaa是在运行时刻赋值的;
         而bbbbbbbbbbb是在编译时就确定的;这里我就我不怎么理解了,
这两句话 字符串应该都存储在文字常量区,之所以一个能改,另外一个不能改,在于 第一句是吧文字常量区的字符串复制了一份给了 s1,所以s1只是修改的副本,副本是存储在栈中的。而第二句,s2直接指向文字常量区,所以不能修改。

而[bo]这两句都应该是运行时复值的[/bo],(只不过一个是指针一个是数组),而且这两个字符串存储在文字常量区[bo],应该都是编译时都已经确定了[/bo] 。问题就这么多了
新建c语言交流群 ,针对  c primer plus这本书   希望高手加入

[[it] 本帖最后由 toyix 于 2008-11-4 18:58 编辑 [/it]]
搜索更多相关主题的帖子: 常量 文字 
2008-11-04 17:37
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
你的理解是对的
如果是局部变量的话,s1和s2都是在栈上的,编译的时候哪能知道,所以肯定是在运行时才赋值的

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-11-04 18:28
iamah
Rank: 1
等 级:新手上路
威 望:1
帖 子:69
专家分:0
注 册:2008-10-31
收藏
得分:0 
不明白说什么
2008-11-04 18:35
toyix
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2008-7-14
收藏
得分:0 
贴上文章地址  http://www.blog.
2008-11-04 18:37
快速回复:有关栈和文字常量区的问题
数据加载中...
 
   



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

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