- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《C语言》课件-7
第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 . 若要取消一个已有宏的作用,要在程序适当地方安排编译预处理命令: #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) . “文件包含”是C语言编译预处理提供的一种功能,它把指定文件的全部内容包含到命令行所在的文件里。 . 文件包含命令行的一般形式是: #include 文件名 或 #include 文件名 功能是:进行编译预处理时,把由文件名或“文件名”指出的整个文件内容并入本文件,一起进行编译。
您可能关注的文档
最近下载
- 2025年山西通用航空职业技术学院单招职业适应性测试题库(全国通用).docx VIP
- 串联式吸附器变压吸附制氧.pdf VIP
- 高教社2024商务礼仪第四版教学课件-2024-01初识商务礼仪.docx VIP
- 会考语文河北试卷及答案.doc VIP
- 奥迪A4保养手册.doc VIP
- AQ 4230_粮食平房仓粉尘防爆规范.pdf VIP
- 2025年宁夏数学(专升本)真题及答案.docx VIP
- 《99.5%纯度变压吸附制氧与氧气提纯一体化系统》编制说明.pdf VIP
- YD 5214-2015 无线局域网工程设计规范.pdf VIP
- 2024年广东省基层住院医师线上岗位培训《推拿技术》答案-中医学专业培训课程专业课.docx VIP
原创力文档


文档评论(0)