我正在尝试更改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 }
为什么上述方法不起作用?指针变量指向的字符是不可变的吗?如果是这样,我将如何修改指针变量的内容?
答案 0 :(得分:3)
这是因为你的char *
指向字符串文字和字符串文字几乎存在于只读存储中的每个现代操作系统中。
尝试将其复制到堆栈中:
char test3[] = "mutable";