里飞网

 找回密码
 立即注册
查看: 434|回复: 0

结构体位定义说明,不能使用取地址

[复制链接]

45

主题

285

帖子

2454

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2454
发表于 2023-4-24 17:49:56 | 显示全部楼层 |阅读模式
本帖最后由 阿里兄 于 2023-4-24 17:51 编辑

关于位域操作有几点需要注意:

1)位域的地址不能访问,因此不允许将&运算符用于位域。不能使用指向位域的指针也不能使用位域的数组(数组是种特殊指针)。例如,scanf函数无法直接向位域中存储数据:
2)位域不能作为函数返回的结果。
3)位域以定义的类型为单位,且位域的长度不能够超过所定义类型的长度。例如:定义 int a:33 是不允许的。
4)位域可以不指定位域名,但不能访问无名的位域。
5)位域的表示范围:
- 位域的赋值不能超过其可以表示的范围。
- 位域的类型决定该编码能表示的值的结果。
6)带位域的结构在内存中各个位域的存储方式取决于编译器,既可从左到右也可从右到左存储。
7)位域的实现会因编译器的不同而不同,使用位域会影响程序可移植性。因此如无必要,最好不要使用位域。
8)尽管使用位域可以节省内存空间,但却增加了处理时间。当访问各个位域成员时,需要把位域从它所在的字中分解出来或反过来把一值压缩存到位域所在的字位中。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-3-29 17:50 , Processed in 0.069040 second(s), 4 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表