c++中的结构体和联合体有什么区别

1.区别
结构体是多个不同类型变量的组合,其占用的内存大小是所有变量大小的总和
联合体是多个不同类型变量的抽取,其占用内存的大小是联合体中最大的那个变量的大小,基本可以确认,union的内存是照着里边占地儿最大的那个变量分的。

2. 解释
结构体中的多个变量同时存在,你可以给其中的每个变量分别赋值。任何一个变量被赋值不影响其他变量。你在需要使用时每个变量都可以同时被取出使用。
联合体中的多个变量同时只有一个存在。你只能给其中的一个变量赋值。你在给联合体的任何一个变量赋值的时候就覆盖了其他的变量,也就是说只有你刚赋值的这个变量存在,其他都被覆盖掉了
struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。
对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。例:

#include 
using namespace std

你可能感兴趣的:(struct,union,C++)