union和struct存放格式
union、struct所占的空间大小; union: 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 联合体是一个结构; 它的所有成员相对于基地址的偏移量都为0; 此结构空间要大到足够容纳最”宽”的成员; 其对齐方式要适合其中所有的成员; 下面解释这四条描述: 由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联合体变量的基地址的偏移量为0,即所有成员的首地址都是一样的。为了使得所有成员能够共享一段内存,因此该空间必须足够容纳这些成员中最宽的成员。对于这句“对齐方式要适合其中所有的成员”是指其必须符合所有成员的自身对齐方式。 例如: #include using namespace std; union A{ int a[5]; char b; double c; }; int main(){ cout **a** **b** **b** **b** **b** **c** **c** ```c++ //例如: struct B { char a; short b; int c; } //则sizeof(A)大小应该是4+4=8字节 a c c b b b b //例如: struct B { char a; char b[2]; char c[4]; } //则sizeof(A)大小应该是1+2+4=7字节 a b b c c c c ...