c语言%6s%6d,C语言及应用第6章(阅读).ppt

C语言及应用第6章(阅读)

1. 位字段的定义 位字段类型定义的一般形式如下:  struct 位字段类型名    { 数据类型名 位字段名1: 常量表达式1;  数据类型名 位字段名2: 常量表达式2;  …   数据类型名 位字段名n: 常量表达式n;  }; 其中,常量表达式用来指定每个位字段的宽度, 数据类型名指定每个位字段的数据类型,一般选用unsigned int,位字段类型名、 位字段名的构成应符合标识符的构成规则。  例如, 定义一个位字段类型如下:  struct weiziduan { unsigned int w1:1;  unsigned int w2:1;  unsigned int w3:1;  unsigned int w4:4;  unsigned int w5:9;     }; 以上定义了一个名为weiziduan的位字段结构类型, 它包含 5 个位字段成员,其数据类型均为无符号整数, 它们的宽度分别为 1、 1、 1、 4、 9 位, 如图 6-5 所示。 ? 图 6-5 位字段存储示意图   在进行位字段类型定义时应注意以下几点:  (1) 当位字段结构中的各成员项的位数总和小于int类型的位长时,它仍将占用一个int类型的位长。  (2) 当位字段结构中的各成员项的位数总和超过int类型的位长时,将占用下一个连续的int位长。但是,一个位字段不能跨越两个int位长。  (3) 省略位字段名时,该段称为无名位字段,表示分配内存时将“跳过”该位字段所指定的位数。当无名位字段的宽度为 0 时,将强制下一个位字段从一个新的字节开始存放。 例如: struct zi { unsigned int z1:4; unsigned int :2; unsigned int z2:1; unsigned int :0; unsigned int z3:1; };   其中,第一个无名位字段表示z1 与z2 之间空 2 位; 第二个无名位字段表示无论前一个字节是否还有剩余空间, z3 都将从下一个新字节开始存放, 如图 6-6 所示。   (4) 一个位字段的长度不能大于一个int位长, 也不能定义位字段数组。 图 6-6 位字段存储示意图 2. 位字段变量的说明 位字段变量的说明与结构变量的说明相同。 例如,  struct weiziduan wz1,wz2; struct zi zd; 程序的运行结果如下:  j的原值 =10,20 jg的原值 =10,20 jg的新值 =100,200 j的返回值=100,200   例 6.5 程序中,main()函数定义了一个结构变量j, 并作为实际参数调用函数f()。f()函数用具有相同结构的结构变量jg作为形式参数接收j传递的数据。 6.2 联 合 6.2.1 联合类型的定义和联合变量的说明  联合类型的定义和引用方式与结构类型非常相似。    1. 联合类型的定义  联合类型定义的一般形式如下:  union 联合类型名 { 成员类型1 成员名1;  成员类型2 成员名2;  … 成员类型n 成员名n;  };   (1) union为联合类型定义的保留字必须原样照写。   (2) 联合类型名的构成应符合标识符的规定, 它与union一起构成特定的联合类型, 在以后的联合变量说明中可以被引用。   (3) 大括号内是由联合成员组成的联合体,每个成员由成员类型和成员名组成, 每个成员的数据类型可以是基本数据类型, 也可以是已定义过的结构类型和联合类型。   例如, 定义一个既能存储整型数据, 又能存储实型数据的联合类型, 定义形式如下:    union lianhe  { int i; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值