| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 352 人关注过本帖
标题:两句话的困惑
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:20 回复次数:4 
两句话的困惑
我今天看书的时候遇到了这样一个问题,char *s="hlooz";中的“hlooz”编译时候指针指向的区域位于PE文件的.rdata节中,是只读的,比如:
main()
{
char*s="sads";
char a[]="sasa";
*(a+2)='x';(是正确的)
*(s+2)='x';(编译通过,但运行时出错)
}

但是我在其他的书中看过的却有这样的解说:char *PS=“dsadsa”;*(ps+2)='m';说的是可以用如下的语句来修改字符串。
这样我就有点糊涂了,这到底是怎么回事?

希望高手帮忙解决一下!


谢谢了呀!
搜索更多相关主题的帖子: 困惑 
2009-10-22 22:02
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:13 
char *PS=“dsadsa”;*(ps+2)='m';说的是可以用如下的语句来修改字符串。
这句话没说错。
char *s="hlooz";中的“hlooz”编译时候指针指向的区域位于PE文件的.rdata节中,是只读的
这句话什么意思,难道是说字符串s是不能修改的吗?但是当做一般字符串处理的话,是可以用这种方法修改的。
2009-10-22 22:08
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:7 
程序代码:
main() 
{ 
char *s="sads"; 
char a[]="sasa"; 
*(a+2)='x'; 
*(s+2)='x'; 
printf("%s\n%s\n",s,a); 
getch(); 
} 
win-TC   TC运行均无错误

我可好玩啦...不信你玩玩^_^
2009-10-22 22:42
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 3楼 pgy
我是在vc6.0上运行的,但是是错误,不知道为什么!

愿用余生致力编程
2009-10-23 15:35
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 2楼 m456m654
char *PS=“dsadsa”;*(PS+2)='m';说的是可以用如下的语句来修改字符串。
这句话没说错。

我在vc6.0上运行的时候却为什么是错误的呢?

愿用余生致力编程
2009-10-23 15:36
快速回复:两句话的困惑
数据加载中...
 
   



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

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