#include<stdio.h>
typedef struct A{
char c;
short int a;
int b;
double d;
}A;
typedef struct B{
double d;
A Aa;
int b;
short int a;
char c;
}B;
typedef struct C{
char c;
short int a;
}C;
typedef struct D{
short int a;
char c;
}D;
int main(){
printf("sizeof(A):%d\n",sizeof(A));
printf("sizeof(B):%d\n",sizeof(B));
printf("sizeof(C):%d\n",sizeof(C));
printf("sizeof(D):%d\n",sizeof(D));
输入结果
对于结构体里面嵌套结构体,把嵌套的结构体按照里面的类型展开,然后再对整体按照对其规则计算
B结构体:
double d;
A Aa;
int b;
short int a;
char c;
======>
double d; ----->8
char c; ------>9
short int a; ------>12;
int b; -------> 16
double d; --------> 24
int b; ------->28
short int a; -----> 30
char c; ----->31
最后按照8的倍数对齐 为32;