在C语言中,有关存储的问题会设计到一些对齐概念的理解,我们知道,
为了能使CPU对变量进行高效快速的访问,变量的起始地址应该具有某些特性,即所谓的“对齐”。例如对于4字节的int类型变量,其起始地址应位于4字节边界上,即起始地址能够被4整除。变量的对齐规则如下(32位系统):
char 在字节边界上对齐
short (16-bit) 在双字节边界上对齐
int and long (32-bit) 在4字节边界上对齐
float 在4字节边界上对齐
double 在8字节边界上对齐
这里纯粹是为了计算机存储方便设计的,在设计到对齐概念时,只需要理解存储单元的首地址必须能够和该存储类型变量的对齐方式整除,例如: 存储int型,sizeof(int)=4.,所以地址必须要能够被4整除,这个问题在结构体占用存储单元大小计算的时候会用到:
比如:
|