在小型c程序中获得分段错误

mez*_*zda 1 c

我写了一个小编:

  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行的这两种不同方式之间有什么区别.任何帮助将不胜感激.谢谢.

Duc*_*uck 7

char* str = "string";
Run Code Online (Sandbox Code Playgroud)

这将字符串放在只读内存中.当您尝试使用下一行修改它时,它是未定义的行为(通常是令人不快的行为).尝试类似的东西

char str[] = "string";
Run Code Online (Sandbox Code Playgroud)

代替.

  • 好,上次我这样做,我的婆婆来访了一个星期.只是不要这样做. (2认同)