正在加载图片...
存空间大小总是由成员中数据长度最长的成员项所占用的内存空间决定。 联合一经定义,便可以用它来说明使用这种数据构造类型的具体对象,其形式与结构对 象的定义相同,如: union utype Int in. double do utype data, 'pt, gdata[20] 由于联合中的各个成员使用同一内存区域,所以在程序运行的任一时刻,联合对象所占 有的内存单元中只能保持某个成员的数据。联合的引入是为了节约内存空间,将不会在同 时刻出现的某些变量结合起来,定义为联合类型,这样使变量定义所占用的内存区域达到最 对于联合的成员访问,与结构成员的访问相同,即采用“.”或“->”来进行访问。如 上例中的定义,可以按以下方式进行访问: data in=99 pt->ch=A gdata[ 1].do=3. 3 7位域 在对外部设备接口硬件进行控制和管理时,经常使用的控制方式是向接口发送方式字或 命令字,以及从接口读取状态字等。它们通常是以二进制为单位的字段组成的数据,称为 位字段数据。 位域是一种结构的变体,它允许访问一个字节的各个位。位域的所有成员只占一个或几 个二进制位,它用来表示被压缩在一个字节内的各种信息。虽然对位的操作可以按位运算来 实现,但运用位域将更有效,更具有通用性。 定义位域的一般语法形式如下所示: truct variable data typel namel: lenght data type2 name2: lenght data typen namen: lenght 从上述语法形式可以看出,位域结构的说明方法与普通结构的说明方法基本相同,只不 过是在成员名后加上冒号和长度说明。 data type只能是int、 unsigned、 signed中选择一种, 且由于单个位不可能具有符号位,因此长度为1的类型只能是 unsigned类型。 对于位域的访问及其他内容,与结构的相应内容十分相似 在位域的所有成员进行存储时,使用的内存大小与int型数据相同。当成员的总位长超 过nt型时,它将占用下一个连续的int型数据位长空间。但是,位域中的任何一个成员 不会跨越两个int型字长空间的边界。存空间大小总是由成员中数据长度最长的成员项所占用的内存空间决定。 联合一经定义,便可以用它来说明使用这种数据构造类型的具体对象,其形式与结构对 象的定义相同,如: union utype { int in; double do; char ch; }; utype data,*pt,gdata[20]; 由于联合中的各个成员使用同一内存区域,所以在程序运行的任一时刻,联合对象所占 有的内存单元中只能保持某个成员的数据。联合的引入是为了节约内存空间,将不会在同一 时刻出现的某些变量结合起来,定义为联合类型,这样使变量定义所占用的内存区域达到最 少。 对于联合的成员访问,与结构成员的访问相同,即采用“.”或“->”来进行访问。如 上例中的定义,可以按以下方式进行访问: data.in=99; pt->ch=’A’; gdata[1].do=3.3; 3.4.7 位域 在对外部设备接口硬件进行控制和管理时,经常使用的控制方式是向接口发送方式字或 命令字, 以及从接口读取状态字等。它们通常是以二进制为单位的字段组成的数据,称为 位字段数据。 位域是一种结构的变体,它允许访问一个字节的各个位。位域的所有成员只占一个或几 个二进制位,它用来表示被压缩在一个字节内的各种信息。虽然对位的操作可以按位运算来 实现,但运用位域将更有效,更具有通用性。 定义位域的一般语法形式如下所示: struct variable { data_type1 name1:lenght1; data_type2 name2:lenght2; . . . data_typen namen:lenghtn; } 从上述语法形式可以看出,位域结构的说明方法与普通结构的说明方法基本相同,只不 过是在成员名后加上冒号和长度说明。data_type 只能是 int、unsigned、signed 中选择一种, 且由于单个位不可能具有符号位,因此长度为 1 的类型只能是 unsigned 类型。 对于位域的访问及其他内容,与结构的相应内容十分相似。 在位域的所有成员进行存储时,使用的内存大小与 int 型数据相同。当成员的总位长超 过 int 型时,它将占用下一个连续的 int 型数据位长空间。但是,位域中的任何一个成员 不会跨越两个 int 型字长空间的边界
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有