typedef struct node1
{
int a;
char b;
short c;
}S1;
|---------int----------| 4字节
|char|----|--short--| 4字节
typedef struct node4
{
bool a;
S1 s1;
short b;
}S2;
|-------bool--------| 4字节
|-------s1----------| 8字节
|-------short-------| 4字节
因为s1占8字节,而s1中最长数据类型为int,占4个字节,bool类型1个字节,short占2字节,因此以4字节对
typedef struct node5
{
bool a;
S1 s1;
double b;
int c;
}S3;
|--------bool--------| 8字节
|---------s1---------| 8字节
|-------double-----| 8字节
|----int----|---------| 8字节
typedef struct node5
{
bool a;
S1 s1;
double b;
int c;
}S4;
|-----------a--------| 4字节
|--------s1----------| 4字节
|--------s1----------| 4字节
|--------b-----------| 4字节
|--------b-----------| 4字节
|---------c----------| 4字节
<pre name="code" class="plain">struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
};
char t:4; 4位
char k:4; 4位
unsigned short i:8; 8位
unsigned long m; // 偏移2字节保证4字节对齐,共8字节