以下代码是否正确?
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;
两个结构现在完全相同吗?甚至是“结构中的结构”?
谢谢!
答案 0 :(得分:2)
是
当您将一个结构变量分配给另一个时,每个成员都会逐个复制,包括您作为OTHERSTRUCT
成员的其他结构DATATYPE
。
答案 1 :(得分:1)
是的,之后他们的内容是一样的。
答案 2 :(得分:1)
a
中的b
和struct DATATYPE
之间可能存在填充字节,并且不能保证这些填充字节不会被结构赋值复制。这并不意味着他们不会,只是你不能依赖他们是否是。
实际成员a
和b
将具有相同的值。副本的效果以递归方式应用于struct类型的成员,因此也可以复制成员成员。