答案 0 :(得分:4)
变量msg1
指向字符串文字占用的内存。字符串文字不可修改。任何修改字符串文字的尝试都会导致未定义的行为。
来自C标准(6.4.5字符串文字)
- 未指明这些数组是否是不同的,只要它们的元素>有适当的价值观。 如果程序试图修改这样的 数组,行为未定义。
醇>
考虑到如果要使用标准C函数strcpy
将字符串复制到字符数组,则数组必须有足够的内存来容纳字符串,包括其终止零。
您可以通过将指针替换为字符数组来使代码有效。例如
char msg1[15] = "Hello World";
//...
strcpy( msg1, "Hello New York" );