如下:
1、跟定义一个结构体类似,只是在成员后面添加一个位域宽度,
2、注意位域宽度别超过前面类型的宽度。
3、结构体元素可以不同类型。
4、结构体所占内存以最大类型宽度为单位
5、如果储存的数据长度大于定义宽度,会溢出,只保留定义宽度范围内的数据。
6、可以在中间空几个位域。
#include <stdio.h>
typedef struct{
unsigned char f1 : 1;
unsigned char f2 : 1;
unsigned char : 1;
unsigned char f3 : 4;
unsigned short int f4 : 16;
}Bit_Flag;
int main() {
Bit_Flag pack;
int* pac;
pack.f1 = 0;
pack.f2 = 1;
pack.f3 = 0xff;
pack.f4 = 0xaaaa;
pac = &pack;
printf("f1: %x\n", pack.f1);
printf("f2: %x\n", pack.f2);
printf("f3: %x\n", pack.f3);
printf("f4: %x\n", pack.f4);
printf("pac: %x\n", *pac);
printf( "Memory size occupied by Bit_Flag : %d\n", sizeof(Bit_Flag));
return 0;
}
f1: 0
f2: 1
f3: f
f4: aaaa
pac: aaaa007a
Memory size occupied by Bit_Flag : 4