相信大部分的程序猿都用到过结构体和联合体,今天就简单的说说结构体和联合体。
--关于结构体和联合体的定义
结构体:struct ,是由一系列相同类型或不同类型的数据构成数据的集合,也叫结构。其最主要的作用就是封装。
联合体:union,几个不同的变量存放在同一块内存区域中。也就是使用覆盖技术,几个变量互相覆盖。
--关于结构体和联合体的长度大小计算
在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和。
而在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。
应该说明的是,这里所谓的共享不是指把多个成员同时装入一个联合变量内,
而是指该联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。
结构体中每一个成员都有自己的内存空间。因此,结构体总大小一般情况下等于各成员大小之和。
但考虑到结构体中存在内存对齐现象,用sizeof求长度需要特别注意这个现象:
sizeof应用在结构上的情况
请看下面的结构:
struct
{
double
char
int
};
对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:
sizeof(MyStruct)=sizeof(double)+sizeof(ch