第八章.位域等.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章.位域等

第八章、位域 联合 枚举 定义 类型及预处理功能 四川农业大学 阮坤 8.1 位域以及结构嵌套 8.2 联合 8.3 枚举 8.4 定义类型名 8.5 预处理功能 *8.6 程序举例 小结 8.1.1位域 计算机语言中的数据通常是以字节为单位表示的。但在实际应用中,常常需要按位来表示信息。 位运算符C语言提供了六种位运算符: 按位与 | 按位或 ^ 按位异或 ~ 取反 左移 右移 位域定义的一般形式是: struct 结构名 { 类型 变量名1:长度; 类型 变量名2:长度; …… 类型 变量名n:长度; } 其中,冒号“:”表示使用的是位域,其后的长度表示需要分配的储存单元的位数。域变量必须定义为int或unsigned。 例如,有下面的结构定义: struct { unsigned bit0:1; unsigned bit1:1; unsigned bit2:1; unsigned bit3:1; unsigned bit4:1; unsigned bit5:1; unsigned bit6:1; unsigned bit7:1; }bits; 域结构的各位段可以不恰好占满一个字节 位域结构变量的定义和引用都与结构变量的定义类似 位域结构成员无地址概念;也不能说明位段数组。 可以说明无名字段,无名字段的空间不能被引用。 一个位段必须存储在同一个单元中,不能跨两个单元。 位段除了可以参加位运算外,还可以在数值表达式中引用。 8.1.2 结构嵌套 在C语言中,结构成员不仅可以是位数可变的位域变量,而且可以是另一个结构类型变量,这种情况被称为嵌套式结构。例如: 8.2 联合 联合是一种与结构相类似的构造类型,联合与构造一样 ,可以包括不同类型和长度的数据。联合与结构的主要 区别在于,联合类型变量所占据的存储空间不是各成员 所需要的存储空间字节数总和,而是联合成员中所需要 存储空间最大的成员所要求的字节数。这是因为C编译 程序规定联合的各成员共享一个公共存储空间。 定义联合变量的一般形式为: union 联合名 { 类型 成员名; 类型 成员名; … … }联合变量; 属于构造数据类型 用途:使几个不同类型的变量共占一段内存 联合类型说明 形式: 在实际应用中,联合可能出现在结构中,结构也可能出现在联合中,为了表示复杂的数据关系,联合和结构常常在一起使用,即联合可能包括结构成员,结构也可能包括联合成员。 8.3 枚举 在定义枚举类型时,与定义一个结构类型一样,数据类型名也可以省略,即当数据类型被定义的同时,可以定义变量为这一特定枚举数据类型。 枚举类型定义的储存特性与已讨论过的变量定义是一致的,即在一个函数中定义的枚举型数据只限于在该函数中使用。 8.4 定义类型名——typedef 8.5 预处理功能 预处理功能是由很多预处理命令组成,这些命令将在编译时进行通常的编译功能〔包含词法和语法分析、代码生成、优化等〕之前进行处理,故称为“预处理”。预处理后的结果和源程序一起再进行通常的编译操作,进而得到目标代码。 预处理功能主要包括如下三种;宏定义、文件包含和条件编译。 8.5.1宏替换 1.简单的字符串替换 简单宏定义的格式如下: #define 宏标识符 字符串 其中,define是关键字,它表示该命令为宏定义,标识符是宏名,它的写法同标识符。字符串用来表示标识符所代表的字符串。简单宏定义是定义一个宏标识符来代表一个字符串。 2.带参宏定义及宏调用 带参数宏定义的一般格式如下: # define 宏标识符(参数表) 表达式 3.定义宏的几种情况 (1)要求两个数中较大数,可以定义宏: #define MAX(a,b)(ab)?a:b (2)要求一个数的绝对值: #define ABS(x)(((x)0)?(x):(-x)) (3)要表示一个数的符号: #define SIGN(x)((x)0?1:((x)==0?0:(-1))) (4)要求一个数的立方值: #define CUBE(x)(x*x*x) 要求一个整数是否为偶数: #define EVEN(a)a%2==0?1:0 8.5.2 包含文件——#include 文件包含命令是C语言程序常用的一条预处理命令,它的格式如下: #include “文件名”或 #include 文件名 其中,include是关键字,(文件名)是被包含的文件名,这里要求使用文件全名,包括路径名和扩展名。 Start ? 这个结构定义了8个成员变量,每个变量只有8位。实际上这8个连续的变量表示了一个字节中有八位

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档