欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

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

    • 资源ID:2121722       资源大小:820.01KB        全文页数:11页
    • 资源格式: PPT        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第九章 编译预处理和动态存储分配,考试要点,一、考核知识点(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 #define SQR(X) X*X main() int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(“%d”a); A) 10 B)1 C)9 D)0 附:#define SQR(x) x*x main() int a,k=3; a=+SQR(k+1); printf(“%dn”,a); ,9.4 典型例题,一、选择题 3.以下程序的输出结果是() #define MIN(x,y) (x) main() int i,j,k; i=10; j=15; k=10*MIN(i,j); printf(“%dn”,k); A) 15 B)100 C) 10 D) 150,9.4 典型例题,一、选择题 4.以下程序: #define N 2 #define M N+1 #define NUM (M+1)*M/2 #include main() int i; for(i=1;i=NUM;i+); printf(“%dn”,i); A) 5 B) 6 C) 8 D)9,9.4 典型例题,一、填空题 1.若要使指针p指向一个double类型的动态存储单元,请填空。 double *p; p=_malloc(size(double); 2.以下程序的输出结果是_ #define PR(ar) printf(“ar=%d”,ar) #include main() int j,a=1,3,5,7,9,11,13,15, *p=a+5; for(j=3;j;j-) switch(j) case 1: case 2: PR(*p+); break; case 3: PR(*(-p); ,

    注意事项

    本文(第九章编译预处理和动态存储分配.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开