C语言第九章.pptVIP

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

第九章 编译预处理和动态存储分配 信息工程学院  编译预处理和动态存储分配 9.1 编译预处理 9.2动态存储分配 9.1编译预处理 编译指令(编译预处理指令):C源程序除了包含程序命令(语句)外,还可以使用各种编译指令(编译预处理指令)。编译指令(编译预处理指令)是给编译器的工作指令。这些编译指令通知编译器在编译工作开始之前对源程序进行某些处理。编译指令都是用“#”引导。 编译预处理:编译前根据编译预处理指令对源程序的一些处理工作。C语言编译预处理主要包括宏定义、文件包含、条件编译。 9.1.1 不带参数宏定义(符号常量的宏定义) 不带参数宏定义又叫符号常量的宏定义,在使用中需满足以下三个条件: 1.不带参数宏定义,一般格式为: #define 标识符 字符串 其中:标识符即为宏名。 2. 宏调用:在程序中用宏名替代字符串。 3. 宏展开:编译预处理时将字符串替换宏名的过程, 称为宏展开。 这里,#define表示是宏定义命令。 其中的字符串可以是常数、表达式或格式 串等。通常,宏名习惯上用大写字母表示,与 所对应的字符串之间用空格隔开。例如: #define PI 3.1415 功能是定义一个符号常量(宏名)PI代替字 符串3.1415。 【例9-1】宏定义简单应用 #define MACRONAME Hello world. /* MACRONAME 是宏名 */ main() { printf(MACRONAME); } 程序运行结果: Hello world. 说明: 1.宏名遵循标识符规定,习惯用大写字母表示,以便区别普通 的变量。 2.#define之间不留空格,宏名两侧空格(至少一个)分隔。 3.宏定义字符串不要以分号结束,否则分号也作为字符串的一 部分参加展开。从这点上看宏展开实际上是简单的替换。 例如:#define PI 3.14; 展开为s=3.14;*r*r;(导致编译错误) 4.宏定义用宏名代替一个字符串,并不管它的数据类型是什 么,也不管宏展开后的词法和语法的正确性,只是简单的替 换。是否正确,编译时由编译器判断。 例如:#define PI 3.14 照样进行宏展开(替换),是否正确,由编译器来判断。 5. #define宏定义宏名的作用范围从定义命令开始直到本源程序文件结束。可以通过#undef终止宏名的作用域。 C语言允许宏带有参数,带参数的宏定义一般形式 为: #define 宏名(参数表) 字符串 其中的字符串中含有参数表中所指定的参数。带参 数的宏调用的一般形式为: 宏名(实参表); 在宏定义中的参数称为形式参数,在宏调用中的 参数为实际参数。对带参数的宏进行替换时,用宏调 用提供的实参,直接替换宏定义命令行中相应的形 参,非形参字符保持不变。 例如: #define AREA(r) 3.1415*r*r 经过上面的定义之后,在源程序中可以使 用下面的赋值语句: s=AREA(5); 经过宏替换后的语句为:s=3.1415*5*5; 【例9-3】从键盘上输入两个数据,比较大小并输出较大的数,定义宏实现。 #define MAX(x,y) (xy)?x:y main() { int a,b,max; printf(Please Input a ,b: ); scanf(%d%d,a,b); max=MAX(a,b); printf(Max=%d\n,max); } 程序运行结果: Please Input a ,b: 30 50 Max=50 带参数宏定义展开规则: 在程序中如果有带实参的宏定义,则按照 #define命令行中指定的“字符串”从左到右进行置换 (扫描置换)。如果串中包含宏定义中的形参,则将 程序中相应的实参代替形参,其它字符原样保留,形 成了替换后的字符串。 注意:还是一个字符串的替换过程,只是将形参 部分的字符串用相应的实参字符串替换。 9.1.3 文件包含 文件包含是指一个源文件可以将另外一个 源文件的全部内容包含进来。其命令的一般形 式如下所示: #include 文件名 或 #include 文件名 其中,文件名是被包含文件的文件名,它 是一个磁盘文件。 例如,file1.h文件的内容如下: int a; int b; file2.c文件的内容如下: #include file1.h main() { scanf(%d%d

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档