struct:结构体
union:共同体或联合体
struct 定义:
关于struct的内存结构,将就会像下图所示这样(在x86机器上演示):
sizeof(struct student)的值为12bytes。
union 定义:
关于union的内存结构,将就会像下图所示这样(在x86机器上演示):
sizeof(union test)的值为4bytes。
有的时候,我们需要几种不同类型的变量存在在同一段的内存空间中,就像上面的,我们需要将一个char类型的mark、一个long类型的num变量和一个float类型的score变量存放在同一个地址开始的内存单元中。上面的三个变量,char类型和long类型所占的内存字节数是不一样的,但是在union中,它们都是从同一个地址存放的,也就是使用的覆盖技术,这三个变量互相覆盖,而这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。
在使用union的时候,我们还需要注意以下的几点:
- 同一个内存段可以用来存放几种不同类型的成员,但在每一个时刻只能存在其中一种,而不是同时存放几种。也就是说,每一瞬间只有一个成员起作用,其它的成员不起作用,即不是同时都存在和起作用。
- 共用体变量中起作用的成员是最后一个存放的成员,在存入一个新的成员后,原有的成员就失去作用。比如以下的代码:
整理于:http://www.jellythink.com/archives/468