- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 用户自定义的数据类型 7.1 结构式数据类型 7.2 指向结构类型的指针 7.3 共享式数据类型 7.3.1 共享式数据类型的定义 7.3.2 共享类型变量的说明与使用 7.4 枚举式数据类型 7.4.1 枚举式数据类型的定义 7.4.2 枚举类型的使用 7.5 编译预处理和起别名 7.5.1 宏命令#define 7.5.2 文件包含命令#include 7.5.3 起别名语句typedef . . C语言在正式对程序代码进行编译前,有一个预处理阶段,专门负责分析和处理程序中那些前面以“#”开头的命令行。包括宏命令、文件包含命令、条件编译命令等。本书只介绍宏命令(#define)和文件包含命令(#include)。 . 用户可以按照自己的习惯,为原有的、或已经给出定义的数据类型另起一个名字(typedef)。这样,程序中就可用新起的别名来说明变量了。 以“#define”开头的行称为“宏命令行”,它是一种在符号名和字符序列之间建立联系的方法,以便给编程带来便利。 1. 简单宏 . 简单宏命令行的一般形式是: #define 宏名 字符序列 为与程序中的变量加以区分,宏名常用大写字母书写。字符序列是由C语言字符集中字符构成的序列,它不是字符串常量,外面没有双引号。 . . 简单宏命令行的作用是:用户编程时可用宏名来代替字符序列,而C在编译预处理时,就做宏替换——把程序中的宏名全部用字符序列替换回来。 . 若要取消一个已有宏的作用,要在程序适当地方安排编译预处理命令: #undef 宏名 这样,由宏名所指定的宏的作用就终止了。 . 例: 编写计算圆周长、圆面积的程序。 double r, girth, area; printf (Please enter value of radius:); scanf (%f, r); girth = 2 *3.14159*r; area =3.14159*r* r; … 原先程序中的写法: . 给出简单宏命令行 #define PI 3.14159 后程序中的写法: double r, girth, area; printf (Please enter value of radius:); scanf (%f, r); girth = 2*PI*r; area =PI*r*r; 使用宏命令行时的几点注意 . (1) 宏命令行中的#define、宏名、字符序列用空格隔开。 (2) 每个宏命令行必须单独占用一行,它的后面不能以分号“;”结束。 (3) 编译预处理做宏替换时,是用字符序列“原封不动地”将程序中的宏名替换掉。因此,在字符序列中要注意圆括号的使用。 (4) 若宏名出现在用双引号括起来的字符串里,编译预处理不对它进行替换。 例: 编写一个程序,利用宏命令行,规定数组元素的个数。 #include stdio.h #define SIZE 10 main() { int k, s[SIZE]; for (k=0; kSIZE; k++) scanf (%d, s[k]); for (k=0; kSIZE; k++) printf (s[k]=%d\n, s[k]); } (1) 程序实现 (2) 分析与讨论 . 由于有了宏命令行: #define SIZE 10 使程序中不再出现具体的数组长度数值,而是代之以宏名“SIZE”。 . 优点:若需要修改数组元素的个数,则只须修改宏命令行中的数字10。否则,就要修改程序中每一个SIZE出现的地方。 2. 带参数宏 . 带参数宏命令行的一般形式是: #define 宏名(参数表) 字符序列 带参数宏命令行的作用是:编程时,用户可用带参数的宏名来代替程序中的字符序列。在编译预处理时C进行宏替换,把程序中的宏名及其参数全部用相应的字符序列替换回来。 . 函数调用不增加程序的长度,但要耗费程序的运行时间;宏替换会增加程序的长度,耗费的是编译时间,而不是程序的运行时间。 例: 有如下的带参数宏命令行: #define MAX(x, y) x y ? x : y 其中“MAX”是宏名,x和y是参数;“x y ? x : y”是字符序列。若程序中原先有: a b ? a : b 那么,就可写成MAX(a, b)。编译预处理时,C会用“a b ? a : b”替换MAX(a, b)。 使用带参数宏命令行的几点注意
您可能关注的文档
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第十一章 位和位段.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第四章 选择结构程序设计.ppt
- C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 作者 赵山林 高媛 第五章 循环结构程序设计.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第1章090909.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第3章091013.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第4章090909.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第6章090924.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第10章091111.ppt
- C语言程序设计 配套课件 作者 朱立华 王立柱 C语言程序设计课件第12章091122.ppt
- C语言程序设计 题解与上机指导 作者 岐艳芳 全书 第1章.ppt
- C语言程序设计教程 第2版 宗大华 陈吉人 C语言 课件-8.ppt
- C语言程序设计教程 第3版 作者 徐士良 第2章 C基本数据类型与基本.ppt
- C语言程序设计教程 第3版 作者 徐士良 第3章 C语言表达式与宏定义.ppt
- C语言程序设计教程 第3版 作者 徐士良 第5章 循环结构.ppt
- C语言程序设计教程 第3版 作者 徐士良 第6章 模块设计.ppt
- C语言程序设计教程 第3版 作者 徐士良 第9章 结构体与联合体.ppt
- C语言程序设计教程 修订本 作者 徐士良 第4章.ppt
- C语言程序设计教程 修订本 作者 徐士良 第6章.ppt
- C语言程序设计教程 修订本 作者 徐士良 第7章.ppt
- C语言程序设计教程 修订本 作者 徐士良 第9章.ppt
文档评论(0)