将具有struct成员的struct复制到另一个struct

时间:2012-12-03 10:54:48

标签: c struct

以下代码是否正确?

   typedef struct
   {
      int x;
      int y;
   } OTHERSTRUCT;


   struct DATATYPE
   {
      char a;
      OTHERSTRUCT b;
   }

   // ...

   // now we reserve two structs
   struct DATATYPE structA;
   struct DATATYPE structB;

   // ... probably fill insome values


   // now we copy structA to structB
   structA = structB;

两个结构现在完全相同吗?甚至是“结构中的结构”?

谢谢!

3 个答案:

答案 0 :(得分:2)

当您将一个结构变量分配给另一个时,每个成员都会逐个复制,包括您作为OTHERSTRUCT成员的其他结构DATATYPE

答案 1 :(得分:1)

是的,之后他们的内容是一样的。

答案 2 :(得分:1)

a中的bstruct DATATYPE之间可能存在填充字节,并且不能保证这些填充字节不会被结构赋值复制。这并不意味着他们不会,只是你不能依赖他们是否是。

实际成员ab将具有相同的值。副本的效果以递归方式应用于struct类型的成员,因此也可以复制成员成员。