【发布时间】:2017-04-09 08:17:44
【问题描述】:
【问题讨论】:
标签: c arrays string strcpy string-literals
【问题讨论】:
标签: c arrays string strcpy string-literals
变量msg1 指向一个字符串字面量占用的内存。字符串文字不可修改。任何修改字符串文字的尝试都会导致未定义的行为。
来自 C 标准(6.4.5 字符串文字)
- 如果这些数组的元素具有适当的值,则不确定这些数组是否不同。 如果程序试图修改这样的 数组,行为未定义。
请注意,如果您想使用标准 C 函数 strcpy 将字符串复制到字符数组,则该数组必须有足够的内存来容纳字符串,包括其终止零。
您可以通过将指针替换为字符数组来使您的代码有效。例如
char msg1[15] = "Hello World";
//...
strcpy( msg1, "Hello New York" );
【讨论】: