这是我认为的位域内存分析图:
结构体中的位域,是通过相邻参数之间的内存大小的和的判断是否当前内存是否能够存储,进而存到下一个内存中。这只是我的一个猜想是我通过显现判断出来的,因为我不能够直接打印出结构体中这些位域的地址所以只能通过如下代码进行测试判断:
#include "stdio.h"
typedef struct Person {
int a : 2;
int a1: 2;
int b: 13;
int c: 16;
int d: 20;
int b1: 13;
int c1: 16;
int d1: 20;
} Person;
int main(void) {
Person person;
printf("%d\n", sizeof(person));
return 0;
}
通过改变结构体中的位数,然后观察结构体本身的字节分配大小,来验证我的猜想是否真确。