- 作者:zhaozj
- 发表时间:2020-12-23 10:53
- 来源:未知
程序: #include <iostream>#include <cstdio> typedef struct AA{ int b ; char a1 ; char a2 ; char a3 ; char a4 ; char a5 ; char a6 ; char a7 ; char a8 ; char a9 ; char a10 ; double c ; char d ;}; /*************************************************************************************************** 我原来认为: typedef struct AA{ int b ; 4 4 char a1 ; 1+3 8 char a2 ; 1 9 char a3 ; 1 10 char a4 ; 1 11 char a5 ; 1 12 char a6 ; 1 13 char a7 ; 1 14 char a8 ; 1 15 char a9 ; 1 16 char a10 ; 1+7 24 double c ; 8 32 char d ; 1+7 40 }; 但实际是 原则: 1. 结构中变量是上下都对齐 2. 变量存储是以 char为单位 ,同类型的要算一起 解释: a1 是char , b 是 int 所以存在对齐 ,a1 后面有三个空位 但 a2,a3,a4 还是和 a1是同类型所以还是存储在 a1 后面 a5 ~ a10 总共 6 个 char 但其后是 一个 double c , 所以补 二个空格 typedef struct AA{ int b ; 4 4 char a1 ; 1 5 /*a1 要对齐,补三个char ,但其后的变量也是char 所以填三个char */ char a2 ; 1 6 char a3 ; 1 7 char a4 ; 1 8