结构体在内存中的存储问题:
结构体是一种比较复杂的结构,一个结构体中可以定义多种不同的类型,不单单是基本数据类型如int,float,char 等,还可以在结构体中定义结构体,指针等复杂的数据结构。下面就来分析下,结构体在内存中的分配空间的问题。
首先,在内存中遵循2个大的原则:
1.不同的数据类型的数据,总是一个个的存储到内存中的,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。因此,存储可能是不连续的。对于不同类型,很可能是不连续的。
2. 对计算出的存储单元进行检查,看其是否为所有元素中占用空间最大的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。
下面以例子分析:
先进行说明,在32位机器上,基本数据类型占的位数 (根据编译器的不同而不同)
char--1字节(8位), unsigned char--1字节(8位),
short--2字节(16位),unsigned short--2字节(16位)
int --4字节(32位), unsigned int --4字节(32位),
long--4字节(32位),unsigned long--4字节(32位),
float--4