1.概述
联合体union的定义方式与结构体一样,但是二者有根本区别。
在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。
2.联合体长度
在The C Programming Language里面讲述union内存分配的原话是
1)联合体就是一个结构
2)联合体的所有成员相对于基地址的偏移量为0
3)此结构空间要大到总够容纳最“宽”的成员
4)并且,其对其方式要适合于联合体中所有类型的成员
我的理解可以概括为两点:
1)联合体的结构空间要足够大,要等于最长的一个结构变量的空间,但是这个最长的空间要满足以下条件:
1.要大于等于最长的一个结构变量的空间
2.并且要能够整除其他结构变量的数据长度,即联合体空间对其他成员的元类型要能够整除(int a[5],其元类型为intÿ