char* string = "abcd";
现在当我尝试更改此字符串的某些字符时,我得到分段错误
*string = 'p';
或
string[0] = 'p';
string[0] = 52;
有人可以向我解释为什么会发生这种情况。
由于
Alok.Kr。
答案 0 :(得分:4)
如果你写char* string = "abcd";
字符串“abcd”存储在内存的静态数据部分,你就无法修改它。
如果你写char* string = 'p';
,那就错了。首先,您尝试声明具有相同名称(字符串)的变量,更糟糕的是,您尝试将char值分配给char指针变量。这不起作用。同样的事情:除了语法错误外,char[0] = 'p';
对编译器没什么意义。
答案 1 :(得分:2)
字符串文字在C中是不可修改的。之前已经多次询问和回答过,但搜索起来并不容易。
答案 2 :(得分:1)
如果要修改string
,请将其声明为数组,而不是指向字符串文字的指针。
#include <stdio.h>
int main()
{
char string[] = "hello world";
string[0] = 'H';
string[6] = 'W';
printf("%s\n", string);
return 0;
}
结果:
$ /tmp/hello
Hello World