以下是引用liufashuai在2012-11-22 16:38:02的发言:
这样不可以!因为在你的进程中,字符串常量“abcde”存在于常量存储区,而指针p正好指向这里,是不可能改变的
所以是错误的
但是你可以先定义一个数组,这可空间是在栈上分配,用常量字符串初始化,相当于一个副本,因此可以改变,但是改变后
原来的常量区的数据没变,因为它是不会改变的
你的意思是说用char *p="abcde";的时候,字符串是不可以修改的!
而char p[]="abcde";的时候,字符串也可以修改的!
对吗?我怎么觉得这两种定义方式等价的啊!
还有一点就是为什么同一个字符串,用指针定义的时候在常量区,而用数组定义的时候在栈中呢?能稍微解释下吗?谢谢!!