C语言程序设计教程 第2版 宗大华 陈吉人 C语言 课件-7.pptVIP

C语言程序设计教程 第2版 宗大华 陈吉人 C语言 课件-7.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)。 使用带参数宏命令行的几点注意

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档