我写了一个小编:
1 #include<stdio.h>
2 main(){
3 char* str = "string";
4 *str = 'k';
5 printf("string is = %s\n",str);
6 }
Run Code Online (Sandbox Code Playgroud)
编译该程序时没有任何错误或警告,但是当我运行它时,它会给出分段错误.如果我将第3行重写为:char str [] ="string"; 这个程序工作得很好.任何人都可以让我知道这里有什么问题??? 编写第3行的这两种不同方式之间有什么区别.任何帮助将不胜感激.谢谢.
char* str = "string";
Run Code Online (Sandbox Code Playgroud)
这将字符串放在只读内存中.当您尝试使用下一行修改它时,它是未定义的行为(通常是令人不快的行为).尝试类似的东西
char str[] = "string";
Run Code Online (Sandbox Code Playgroud)
代替.