C版课件章.pptVIP

  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文档。上传文档
查看更多
C版课件章.ppt

. 若要取消一个已有宏的作用,要在程序适当地方安排预处理命令: #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)。 使用带参数宏命令行的几点注意 . (1) 带参数宏命令行里给出的是形式参数,程序中使用的是实际参数。 (2) 带参数宏与简单宏在替换规则上是一样的,预处理时都是“原封不动地”替换。因此,在宏命令行里,要特别注意圆括号的使用。 带参数宏与有参函数间的几点区别 . (1) 函数调用时,先计算实际参数的值,然后向形式参数传递;宏替换时,不对它的参数做任何计算,只是简单地替换而已。 (2) 函数名、形式参数以及实际参数都有自己的类型;宏名和参数无类型可言 。 (3) 程序运行时处理函数调用(比如为参数分配存储区);宏替换是在预处理时完成,没有分配存储区的问题。 (4) 7.5.2 文件包含命令#include . “文件包含”是C语言预处理提供的一种功能,它把指定文件的全部内容包含到命令行所在的文件里。 . 文件包含命令行的一般形式是: #include 文件名 或 #include 文件名 功能是:进行预处理时,把由文件名或“文件名”指出的整个文件内容并入本文件,一起进行编译。 如图所示。 #include “file2” (A) (B) 文件file1.c 文件file2.c 包含 预处理 (B) (A) 文件file1.c . 被包含文件名可用尖括号括住,也可用双引号括住。这两种用法都是可行的。差别是:使用尖括号时,预处理程序只到系统内部规定的目录里去搜索指定的文件;使用双引号时,预处理程序先在当前目录下搜索指定的文件,在未找到时,才到系统内部规定的目录里去搜索指

文档评论(0)

基本资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档