C零散知识点汇总之union关键字
union维护足够的空间来放置多个数据成员中的一种,而不是为每一个数据成员配置空间。在union中所有的数据成员公用一个空间,同一时间只能存储其中一个数据成员,并且所有数据成员具有相同的起始地址。
union StateMachine { char character; int num; char *str; double exp; }
一个union只分配一个足够大的空间来容纳最大长度的数据成员,以上例子而言,最大长度是double形态,所以StateMachine的空间大小就是double数据类型的大小。
大小端模式对于union类型数据的影响:
如何判断大小端请参考博客《大端和小端模式》。
union类型的数据所占空间等于或大于其最大的空间所占的空间。对于union类型的成员都从相对于该联合体基地址的偏移量为0处开始,也就是联合体的访问不乱对哪一个变量的读取都是从union的首地址开始的。