C语⾔结构体Struct中冒号的⽤法
C语⾔结构体Struct 中冒号的⽤法
本⽂有部分内容参考。
关于“位域”的说明
有些信息在存储时,并不需要占⽤⼀个完整的字节,⽽只需占⼏个或⼀个⼆进制位。
为了节省存储空间,并使处理简便,C 语⾔⼜提供了⼀种数据结构,称为"位域"或"位段"。
所谓"位域"是把⼀个字节中的⼆进位划分为⼏个不同的区域,并说明每个区域的位数。每个域有⼀个域名,允许在程序中按域名进⾏操作。这样就可以把⼏个不同的对象⽤⼀个字节的⼆进制位域来表⽰。
结构体表现形式
struct 位域结构名
{
类型说明符位域名:位域长度
c语言struct用法例子
}位域结构体定义的变量;
下⾯开始结合例⼦进⾏说明
例⼦1
struct bit_st{
int a :7;
int b :2;
int:5;
int c :3;
}data;
bit_st表⽰位域结构体,a、b、c表⽰对应的位域," : "后⾯的值为对应位域占的位长度,data表⽰位域结构体定
义的变量。
⼀个位域存储在同⼀个字节中,如⼀个字节所剩空间不够存放相邻下⼀位域时,则会从下⼀单元起存放该位域。
也可以有意使某位域从下⼀单元开始。
⽐如:a占7位,b占2位,那么第⼀字节存了a之后,剩余空间就只有1位了,不够存放b,b就要从第⼆个字节开始存放啦~
位域可以是⽆名位域,这时它只⽤来作填充或调整位置。⽆名的位域是不能使⽤的。
⽐如:位域b的下⼀个位域是⽆名位域,这个⽆名位域占了5位,这5位填 0 表⽰不使⽤,那么第⼆个字节的空位就剩1位,放
不下位域c,所以位域c要从第三个字节开始存放啦~
由于位域不允许跨两个字节,因此位域的长度不能⼤于⼀个字节的长度,也就是说不能超过8位⼆进位。如果最
⼤长度⼤于计算机的整数字长,⼀些编译器可能会允许域的内存重叠,另外⼀些编译器可能会把⼤于⼀个域的部分存储在下⼀个字中。
位域的使⽤和结构成员的使⽤相同,其⼀般形式为:
⽐如:位域变量名.位域名
⽐如:位域变量名->位域名
给位域赋值(应注意赋值不能超过该位域的允许范围)。
⽐如:位域b占2位,那么它可被赋的最⼤值为3(即⼆进制的11)。总结
如果看着乱可以问我~
欢迎探讨与指正━ (*`∀ ´ *)ノ亻!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。