这个问题在这里已有答案:
我试图更改由char指针变量指向的字符:
char *test3 = "mutable";
printf("Expected: mutable, Result: %s\n", test3);
testt(test3);
printf("Expected tutable, Result: %s\n", test3);
void testt(char *s) {
*s = 't'; // FAILS, I get Segmentation Fault Error
}
为什么上述方法不起作用?指针变量指向的字符是不可变的吗?如果是这样,我将如何修改指针变量的内容?
1 回答
这是因为你的
char *
指向字符串文字和字符串文字几乎存在于只读存储中的每个现代操作系统中 .尝试将其复制到堆栈中: