【发布时间】:2015-05-09 19:03:18
【问题描述】:
对不起,我可能会问一个愚蠢的问题,但我想了解以下作业有什么不同吗? strcpy 在第一种情况下有效,但在第二种情况下无效。
char *str1;
*str1 = "Hello";
char *str2 = "World";
strcpy(str1,str2); //Works as expected
char *str1 = "Hello";
char *str2 = "World";
strcpy(str1,str2); //SEGMENTATION FAULT
编译器如何理解每个赋值?请澄清。
【问题讨论】:
-
您应该使用
char str1[] = "Hello";或动态分配内存。 -
你的第一个例子甚至没有编译,应该是
str1 = "Hello";。说了这么多,修改一个字符串字面量就是UB。 -
您好 Vane,第一个示例在我的 cygwin 上按预期编译和工作。
标签: c