C 如何使用赋值运算符处理复制结构(不是指向结构的指针)。我在下面有一个示例程序来演示我的问题。
struct s {
char string[20];
};
void main() {
struct s var1, var2;
strcpy(var1.string, "hello");
printf("var1: %s\n", var1.string);
printf("var2: %s\n", var2.string);
var2 = var1;
printf("var1: %s\n", var1.string);
printf("var2: %s\n\n", var2.string);
strcpy(var2.string, "goodbye");
printf("var1: %s\n", var1.string);
printf("var2: %s\n", var2.string);
}
我期望的输出首先是 "var1: hello var2:" 因为 var2.string 什么都不是。
第二个块应该是“var1: hello var2: hello”,因为 var1 和 var2 是相同的。
第三个块应该是“var1: goodbye var2: goodbye”,因为 var1 和 var2 应该是相同的内存位置。
不过,我得到的第三个块是“var1: hello var2: goodbye”。所以看起来该行var2 = var1
自动将 var2 的所有属性设置为 var1 的属性。这是 C 所做的,而不是简单地将它们分解到内存中的位置吗?