字符串与字符指针的问题:为什么用数组定义的字符串可以修改,而用指针定义的不能修改?

2025-03-23 13:38:14
推荐回答(3个)
回答1:

char *p="abcde";
这种方式是定义了一个字符型指针,指向常量字符串"abcde"

char p[]="abcde";
这种方式是定义了一个字符数组,其长度自动设置其等于"abcde",

所以第一种指向了常量区,无法修改;第二种定义了普通的数组变量,放在栈中,可以修改

回答2:

"I love you China, do you love me?"
在存放在.rodata段,该段是只读的,当你强行做修改的时候,当然要报错喽。

而定义为数组的形式之后:就把这个字符串拷贝进数组了,对于数组中的内容,可以随便修改呀. 原来的字符串还是不变的。。。

具体回答,参考我的博客:http://blog.csdn.net/hu1020935219/article/details/12948947

回答3:

因为再定义字符指针时默认的在前面有一个const就是无法修改它的值。