标题:字符串常量的生命期与存储域
取消只看楼主
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
 问题点数:0 回复次数:2 
字符串常量的生命期与存储域
在书上看到过:
char *str(void)
{
char *p="abc";
return p;
}
main()
{
char *s="efg";
s= str();
printf("%s",s);
}
输出是abc

这程序没有错误,本来我也是一直以为输出是abc 的,但是在看了一本书上说的char *s是字符串常量,它位于静态存储区,在程序的生命期内是恒定不变的,那为什么调用了s=str()这函数后s就变成了abc了?
我就是红色那里不理解,它说的在程序的生命期内恒定不变是指哪个生命期?还有,它说的恒定不变是指什么不变?

[此贴子已经被作者于2006-12-9 11:23:42编辑过]

搜索更多相关主题的帖子: 生命期 常量 字符 
2006-12-09 11:22
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
得分:0 
呃...首先我也知道编译后是什么...
但是我要问的是char *s是字符串常量,它位于静态存储区,在程序的生命期内是恒定不变的,这句应该怎么理解...
还有,,,红色那行字说得没有错误..
现在我就不是很理解它的意思
2006-12-09 12:14
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
得分:0 
噢..明白..非常感谢
2006-12-09 16:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-108313-1-1.html




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

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