在C中将一个结构分配给另一个结构?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

你能分配一个结构的一个实例给另一个,就像这样:

struct Test t1;
struct Test t2;
t2 = t1;

我已经看到它适用于简单结构,它适用于复杂结构吗? 编译器如何知道如何根据数据类型复制数据项,即区分an int和string?

提问于
用户回答回答于

是的,如果结构是相同的类型。认为它是一个内存拷贝。

用户回答回答于

是的,结构支持赋值。但是,有一些问题:

struct S {
   char * p;
};

struct S s1, s2;
s1.p = malloc(100);
s2 = s1;

现在这两个结构体的指针都指向相同的内存块 - 编译器不会将指针复制到数据。现在很难知道哪个结构实例拥有数据。这就是为什么C ++发明了用户可定义的赋值运算符的概念 - 你可以编写特定的代码来处理这种情况。

扫码关注云+社区