[2017年整理]位结构体和union

上传人:豆浆 文档编号:916642 上传时间:2017-05-21 格式:DOCX 页数:3 大小:17.83KB
返回 下载 相关 举报
[2017年整理]位结构体和union_第1页
第1页 / 共3页
[2017年整理]位结构体和union_第2页
第2页 / 共3页
[2017年整理]位结构体和union_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《[2017年整理]位结构体和union》由会员分享,可在线阅读,更多相关《[2017年整理]位结构体和union(3页珍藏版)》请在金锄头文库上搜索。

1、关于位结构体和 union 的一些介绍位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时 , 位结构 比按位运算符更加方便。 位结构定义的一般形式为 : struct 位结构名 数据类型 变量名: 整型常数; 数据类型 变量名: 整型常数; 位结构变量; 其中: 数据类型必须是 int(unsigned 或 signed)。 整型常数必须是非负的整 数, 范围是 015, 表示二进制位的个数, 即表示有多少位。 变量名是选择项, 可以不命名, 这样规定是为了排列需要。 例如: 下面定义了一个位结构。 struct unsigned incon: 8; /*incon 占用低字节的 0

2、7 共 8 位*/ unsigned txcolor: 4;/*txcolor 占用高字节的 03 位共 4 位*/ unsigned bgcolor: 3;/*bgcolor 占用高字节的 46 位共 3 位*/ unsigned blink: 1; /*blink 占用高字节的第 7 位 */ ch; 位结构成员的访问与结构成员的访问相同。 例如: 访问上例位结构中的 bgcolor 成员可写成 : ch.bgcolor 注意: 1. 位结构中的成员可以定义为 unsigned, 也可定义为 signed, 但当成员长 度为 1 时, 会被认为是 unsigned 类型。因为单个位不可能具

3、有符号。 2. 位结构中的成员不能使用数组和指针, 但位结构变量可以是数组和指针, 如果是指针, 其成员访问方式同结构指针。 3. 位结构总长度(位数), 是各个位成员定义的位数之和, 可以超过两个字 节。 4. 位结构成员可以与其它结构成员一起使用。 例如: struct info char name8; int age; struct addr address; float pay; unsigned state: 1; unsigned pay: 1; workers; 上例的结构定义了关于一个工从的信息。其中有两个位结构成员, 每个位结 构成员只有一位, 因此只占一个字节但保存了两个信

4、息 , 该字节中第一位表示工 人的状态, 第二位表示工资是否已发放。由此可见使用位结构可以节省存贮空间。/*/补充说明一点,如果要定义超过两个字节的位结构体,需要注意,按字节填充!即:比如定义一个 4 字节的位结构体,应该这样定义:struct bitstruct unsigned a: 8;unsigned b: 1;unsigned c: 2;unsigned d: 5:signed int e:16;data;而不要这样定义:struct bitstruct unsigned a: 8;unsigned b: 1;unsigned c: 2;signed int e:16;unsigne

5、d d: 5:data;因为 C 语言在填充的时候,最小的填充方式是按字节填充的,所以要以字节为单位。关于和 union 的结合union 因为其可以互换的数据结构,在数据通讯协议中常常会使用到,一般我们这样定义数据通信协议结构包struct rawstructint a;long b;/2+4 = 6 byteunion rawstructstruct rawstruct structdata;unsigned char unionchar6; ;这样对数据的打包和解包就能方便实现。union 和位结构体的结合:如上面定义的位结构体,甚至可以定义下面的 union 结构struct bitstruct unsigned a: 8;unsigned b: 1;unsigned c: 2;unsigned d: 5:signed int e:16;data;union rawstructstruct bitstruct datas8;signed long unionchar8;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号