| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 311 人关注过本帖
标题:C语言,关于字符串的小问题!求高手解答,谢谢!!谢谢!!
取消只看楼主 加入收藏
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:3 
C语言,关于字符串的小问题!求高手解答,谢谢!!谢谢!!
char *p="abcde";
p[0]='b';                   //这条语句有错误吗??求高手帮忙看看,指点一二,谢谢了!!
printf("%s",p);
搜索更多相关主题的帖子: 字符串 C语言 
2012-11-22 12:07
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
回复 4楼 liufashuai
你的意思是说用char *p="abcde";的时候,字符串是不可以修改的!
而char p[]="abcde";的时候,字符串也可以修改的!
对吗?我怎么觉得这两种定义方式等价的啊!
2012-11-22 22:28
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
以下是引用weishen2011在2012-11-22 22:28:15的发言:

你的意思是说用char *p="abcde";的时候,字符串是不可以修改的!
而char p[]="abcde";的时候,字符串也可以修改的!
对吗?我怎么觉得这两种定义方式等价的啊!

还有一点就是为什么同一个字符串,用指针定义的时候在常量区,而用数组定义的时候在栈中呢?能稍微解释下吗?谢谢!!
2012-11-22 22:30
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
以下是引用liufashuai在2012-11-22 16:38:02的发言:

这样不可以!因为在你的进程中,字符串常量“abcde”存在于常量存储区,而指针p正好指向这里,是不可能改变的
所以是错误的
但是你可以先定义一个数组,这可空间是在栈上分配,用常量字符串初始化,相当于一个副本,因此可以改变,但是改变后
原来的常量区的数据没变,因为它是不会改变的


你的意思是说用char *p="abcde";的时候,字符串是不可以修改的!
而char p[]="abcde";的时候,字符串也可以修改的!
对吗?我怎么觉得这两种定义方式等价的啊!

还有一点就是为什么同一个字符串,用指针定义的时候在常量区,而用数组定义的时候在栈中呢?能稍微解释下吗?谢谢!!
2012-11-22 22:31
快速回复:C语言,关于字符串的小问题!求高手解答,谢谢!!谢谢!!
数据加载中...
 
   



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

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