当前位置: 代码迷 >> C语言 >> [讨论]怎么回事?
  详细解决方案

[讨论]怎么回事?

热度:353   发布时间:2007-11-18 18:24:56.0
[讨论]怎么回事?

char *p="love";
p[0]='k';不能这样?

搜索更多相关的解决方案: love  

----------------解决方案--------------------------------------------------------

字符串是一个常量数组,里面的元素不能改变


----------------解决方案--------------------------------------------------------

当然可以了.
因为p保存了"love"存放地址.


----------------解决方案--------------------------------------------------------
以下是引用PcrazyC在2007-11-18 18:51:34的发言:

字符串是一个常量数组,里面的元素不能改变

同意
答案是肯定的,不可以改变.


----------------解决方案--------------------------------------------------------
我是菜鸟~不怎么明白~那有些题目中~要删除里面的部分字符怎么弄呢~或者替换,该怎么实现呢~

----------------解决方案--------------------------------------------------------
以下是引用zhuanghu1987在2007-11-19 11:10:51的发言:
我是菜鸟~不怎么明白~那有些题目中~要删除里面的部分字符怎么弄呢~或者替换,该怎么实现呢~

字符串是常量,不可改变,我试过一些特别的方法,但还是没有达到要求


----------------解决方案--------------------------------------------------------
以下是引用PcrazyC在2007-11-18 18:51:34的发言:

字符串是一个常量数组,里面的元素不能改变

真是高手,一语命中要害,支持!


----------------解决方案--------------------------------------------------------
"love"
"love" 存放在“常量数据段”


对于 const 也应当这样处理,但很多编译器不能做到。

[ 居然刚刚才想到这个 ]

[此贴子已经被作者于2007-11-19 12:06:21编辑过]


----------------解决方案--------------------------------------------------------
char *p="love"相当于const char *p="love",p指向的字符串不可以改变,但p本身可以改变。

----------------解决方案--------------------------------------------------------

可以变的.
因为"love"为常量也要存储,存储时就有存储地址.
p的保存了常量的存储地址.
所以,p[0]='k';就是把'l'的存储空间的数据改成'k'.

但有些编译器不支持,改变常量的值.
这样的情况要依情况而定.


----------------解决方案--------------------------------------------------------
  相关解决方案