1、根据最大的占的字节变量和偏移量来计算:
#include <stdio.h>
struct A{
int a; //4字节
double b;//8字节
short c;//2字节
char d; //1字节
};
typedef struct{
char e[2];
short f;
struct A i;
}B;
int main()
{
struct A aaa;
printf("sizeof A =%d\n",sizeof(aaa));
printf("sizeof B =%d\n",sizeof(B));
return 0;
}
最大字节变量为double 为8字节
偏移量: a 4 * 0 = 0;
b 8 * 1 = 8;
c 2 * 8 = 16
d 1 * 18= 18
a | a | a | a | x | x | x | x |
b | b | b | b | b | b | b | b |
c | c | d | x | x | x | x | x |
2、结构体嵌套
1 * 0 = 0
2 * 1 = 2;
2+ 4*0
e | e | f | f | x | x | x | x |