默认情况下,为了方便对结构体内元素的访问和管理,当结构体内的元素的长度都小于处理器的位数的时候,便以它里面最长的数据元素为对齐单位;如果结构体内存在长度大于处理器位数的元素,那么就已处理器的位数为对齐单位。但是结构体内类型相同的连续元素将在连续的空间内,和数组一样。
例如:
typedef struct
{
short a1;
short a2;
long a3;
}A;
struct{
short a1;
short a2;
short a3;
}A
struct{
long a1;
short a2;
}B
sizeof( A)=6, sizeof( B)=8,为什么?
注:sizeof(short)=2,sizeof(long)=4
________________________________________
[C++]中:::在缺省的情况下(编译器都会将结构体中的内容在自然边界上对齐):
sizeof(short)=2 为单字,即要在偶数地址上对齐!
假设a1的地址为:0x00000000h,则a2为0x00000002h,a3为0x00000004h(以上都为相对地址)
所以sizeof(A)=4+2=6;