位域声明
位域的主要作用是节省存储空间,位域的声明在结构体内有以下形式,
struct {
type [member_name] : width ;
};
以下表格描述了位域元素
| 元素 | 意义 |
|---|---|
| type | 可以是int,unsigned int等等,不可是数组 |
| member_name | 成员变量名字 |
| width | 位宽 |
关于struct占用空间,感觉sizeof(struct)=sum(width)/sizeof(type)+(无余数?0:sizeof(type));
struct st_mm
{
short i:15;
short j:2;
}; //占用 4B
struct st_mm
{
short i:15;
short j:1;
}; //占用 2B
struct st_mm
{
short i:15;
short k;
short j:1;
}; //占用 6B
struct st_mm
{
short i:17;
short j:1;
}; //编译不通过 应为i最大位16比特
struct内存占用
struct张勇空间规则:
①是成员类型最大的整数倍
②在内存的偏移地址必须是其滋生长度的整数倍
计算方式:(表面理解)
1.先找出最大的类型变量
2.在它之前的总内存必须和最大类型对齐(整数倍)
3.在它之后的总内存必须和最大类型对齐(整数倍)
struct st_mm
{
char b8;
short bbb;
char b10;
}; //占用 6B 2+2+2
struct st_mm
{
char b8;
short bbb;//内存开始地址必须是sizeof(bbb)的整数倍
char b10;
int c;
}; //占用 12B 4+4+4 b8与bbb 第一个4,b10第二个4
Mr.Zhang
