C语言union和struct的区别

union一般结构

union 联合名{

数据类型:成员名;

数据类型:成员名;

……

} 联合变量名1,联合变量名2;

struct一般结构

struct 结构名{

数据类型:成员名;

数据类型:成员名;

……

}结构变量名1,结构变量名2;

主要区别:
1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员; 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的,一个struct变量的总长度等于所有成员长度之和,遵从字节对其原则; 在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在 , Union变量的长度等于最长的成员的长度

2. 对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了,所以,共同体变量中起作用的成员是最后一次存放的成员; 而对于struct的不同成员赋值是互不影响的。