改变常量字符串(C99)

Mic*_*ael 1 c string

我有2个关于该代码的问题:

char* word="Hello World";
word[0]='a';
printf("%s",word);
Run Code Online (Sandbox Code Playgroud)

我知道当你创建这样的字符串时,你不能更改字符串,因为它是一个常量字符串,所以我不明白为什么我可以运行这段代码并且没有任何错误(我使用代码块C99)?另一个奇怪的事情是,这个词并没有真正改变,printf仍在打印:"Hello World".

hac*_*cks 5

当您尝试修改字符串文字时,它会调用未定义的行为.结果可能是预期的或意外的.无论是将打印Hello Worldaello World或者也可以打印什么.您可能会遇到分段错误或任何意外行为.

  • +1警告. (2认同)