C语言自定义类型语言自定义类型—–位段,枚举,联合(共用体)位段,枚举,联合(共用体)
一、位段一、位段
位段和结构体的声明类似
struct A
{
unsigned char a : 3;
unsigned char b : 4;
unsigned char c : 5;
unsigned char d : 4;
};
这里我们声明了一个位段类型A,与结构体不同的是,每个成员后面都有一个冒号且都跟一个数字,其含义是该成员占用几个比特位。
位段的内存分配位段的内存分配
位段的成员可以是int 、unsigned int、signed int、或者是char(属于整型家族)类型。
位段的空间上按照需要以4个字节(int)或者1个字节(char)的方式来开辟的。
该例子中,struct A类型的位段一共占3个字节。
位段的使用位段的使用
其他和结构体类似,可以对成员进行赋值使用。
struct A
{
unsigned char a : 3;
unsigned char b : 4;
unsigned char c : 5;
unsigned char d : 4;
};
int main()
{
struct A s = { 0 };
s.a = 1;
s.b = 2;
s.c = 3;
s.d = 4;
printf("%d",sizeof(s));
printf("%u %u %u %u",s.a,s.b,s.c,s.d);
system("pause");
return 0;
}
评论0