第九章编译预处理和动十态存储分配.pptVIP

第九章编译预处理和动十态存储分配.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文档。上传文档
查看更多
第九章编译预处理和动十态存储分配

第九章 编译预处理和动态存储分配 考试要点 一、考核知识点(3%左右): 1.宏定义、不带参数的宏定义、带参数的宏定义 2.文件包含处理 3.动态存储分配 二、重要考点: 1.理解并会使用宏定义 2.使用常用函数的“文件包含”。 9.1 宏定义 考点1 不带参数的宏定义 不带参数的宏定义命令形式如下: #define 宏名 替换文本 在define宏名和宏替换文本之间要用空格分隔开。 说明:宏名一般习惯用大写字母表示,宏替换的过程实质上是原样替换的过程。宏定义可以减少程序中重复输写某些字符串的工作量。 考点2 带参数的宏定义 定义的一般形式是: #define 宏名(参数表) 字符串 宏定不只进行简单的字符串替换,还要进行参数替换,例如: #define MV(x,y) ((x)*(y)) … a=MV(5,2); /*引用带参的宏名*/ b=6/MV(a+3,a); 注意:在替换带参数的宏名时,圆括号必不可少。 9.1 宏定义 考点2 带参数的宏定义 带参数的宏和函数之间有一定类似之处,在引用函数时也是在函数右边的括号里写参数,也要求实参与形参数目相等,但两者是不同的,主要表现在: (1)函数调用时,要求实参形参类型相匹配,但在宏替换中,对参数 没有类型的要求。 (2)函数调用时,先求出实参表达式的值,然后代入形参,而使用带 参数的宏只是进行简单的字符串替换。 (3)函数调用是在程序运行时处理的,要分配临时的内存单元,还要 占用一系列的处理时间。宏替换是在编译预处理时完成的,因 此,宏替换不占用运行时间。不被分配内存单元,不进行值的传 递,也没有”返回值”的概念。 (4)使用宏的次数较多时,宏展开后源程序变长,而函数调用不会。 9.2 文件包含 考点3 文件包含 所谓文件包含,是指在一个文件中,去包含另一个文件的全部内容。C语言用#include命令行来实现文件包含的功能,形式如下: #include “文件名” 或 include 文件名 两者的区别: 前者,系统先在当前源程序所在目录内查找指定的包含文件,若找不到,再按系统指定的标准方式到有关目录中去寻找。 后者,系统将直接按照系统指定的标准方式到有关目录中去寻找。 9.3 关于动态存储的函数 我们知道,构成链表结构的每一个节点,是在需要时由系统自动分配存储的,即需要时才开辟一个节点的存储单元。 考点4 malloc()函数 函数原型为: void *malloc(unsigned int size); 该函数的作用是系统自动在内存的动态存储区中,分配长度为size的一段连续空间,若此函数执行成功,返回指向被分配区域的起始地址的指针,若失败,则函数返回值为空指针(NULL)。 考点5 calloc()函数 函数原型为: void *calloc(unsigned n,unsigened size); 该函数的作用是系统自动在内存的动态存储区中,分配n个长度为size的连续空间。 考点6 free()函数 函数原型为: void free(void *p); 该函数的作用是释放由p指向的那段内存空间,使这段存储空间能为他用。P是最近一次调用malloc()或calloc()函数时返回的值,注意:free()函数无返回值。 9.4 典型例题 一、选择题: 1.以下叙述中正确的是( ) A) 用#include包含的头文件的后缀不可以是”.a” B) 若一些源程序中包含某个头文件,当该头文件有错时,只需对该 头文件进行修改,包含此头文件的所有源程序不必重新进行编译。 C)宏命令行可以看做是一行C语句 D)C编译中的预处理是在编译之前进行的 9.4 典型例题 一、选择题: 2.执行下述程序后,输出的结果是( ) #include stdio.h #define SQR(X) X*X main() { int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m);

文档评论(0)

180****5152 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档