sizeof sturct 字节对齐

例如:

typedef struct S1
{
int a;
int b;
int c;
int d;
char e;
float f;
short g;
long h;

};

void main()
{
int b,c; int e;
struct S1 test;
int a=(b=4,c=6,e=8);
printf("sizeof test1 is %d/n",sizeof(test)); //结果32

}

原理:1,字节数计算从0开始

         2,当前的位置必须可以同当前类型字节整除,才可以作为起始位置

         3,选定好起始位置后,这个起始位置也要包含在字节数计算内

         4,最大的字节长度必须是8的整数倍 ,如果不是的话就计算成8的整数倍就可以了

 

详解:首先是一个int,那么从0开始,因为0可以整除int类型字节大小4,所以就从0开始算起计算四个字节,就到了位置3,那么0~3就是这个int的字节长度,接着又是一个int,那么3后面是4,4可以整除int类型字节大小4,所以就从4开始计算,4~7为第二个int的字节长度,依次类推,最后的字节长度 31,因为这个最终的长度必须是8的整数倍,所以最近的就是32,那么这个struct的sizeof就是最终的32字节长

你可能感兴趣的:(sizeof sturct 字节对齐)