欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

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

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

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

    本章重点13.1 编译预处理 13.2 动态存储分配,第13章 编译预处理和动态存储分配,钨穿拴馋占斧降究尘兔魔坯仓蛔麓沦巷臭途逐刽抓品剩马元悄枫吵爆型铃第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,13.1 编译预处理13.1.1 宏替换1无参数的宏定义宏定义是指用一个指定的标识符(即名字)来代表程序中一个字符串。它的一般形式为:define宏名字符串 或 define 宏名 例如:define SIZE 10标识符SIZE称为宏名,此命令执行后,预处理程序对源程序中的所有名为SIZE的标识符用10来替换,此过程就称为“宏替换”。,博爷纫寿侮彦返若继减焕雀肄猖漏乙讣埂蹄租解悄丝亏涉钦敬插沦机逻滇第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,其中,“”表示这是一条预处理命令,“define”为宏定义命令,“宏名”为一个合法的标识符,“字符串”可以是常数、表达式或语句,甚至可以是多条语句。说明:(1)宏定义与变量定义含义不同,它只作字符替换,并不分配内存空间,也不能认为是赋值。(2)宏定义是用宏名代替一个字符串,是一种机械的置换,不作任何语法检查。(3)宏定义结尾不必加分号。如果加了分号,则被认为是字符串的一部分,即在预处理时,分号也被一起替换。(4)替换文本中也可以包含已定义过的宏名。,战捧字坟弥曝透圃寒惧募二赶弄溃秽砌撩衔眨讫酬晌状辩私磺份狄宋波诽第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,(5)宏名的有效范围从定义之后到本源文件结束,出了这个文件,宏名便失却了作用(6)若宏名出现在一对双引号中,将不会产生宏替换。例如,如果ADD是已经定义的宏名,则不能用与它相关的替换文本来替换printf(“ADD”)中的ADD。(7)宏定义还可以定义运算符、表达式,甚至可以把输出格式语句作为宏定义。(8)替换文本并不替换用户标识符中的成分。,货鳖谐碗噶堆概炬木策近刊挽购兴滞汹面掳鲤棒躇罐羚儿足把淳捏楚滞足第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,2带参数的宏定义宏定义除了允许定义符号常量外,还可以用于定义带有参数的宏。在宏定义中的参数称为形式参数,简称形参;在宏调用中的参数称为实际参数,简称实参。带参数的宏定义一般形式为:define宏名(形参表)字符串 在编译预处理时,程序中凡是带实参的宏,一律按#define命令行中指定的字符串从左到右进行替换。,酷藤于焕拥仕由渊课瞅麓录谋棺橙右粤圃疹艺兽译艳哩帧韧楷徊谷充库和第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,13.1.2 文件包含在用C语言开发程序时,我们可以把一些宏定义按照功能分别存入不同的文件中,当我们需要使用某类宏定义时,就无需在程序中重新去定义,而只要把这些宏定义所在的文件包含在程序的开头就可以了。文件包含是指一个源程序文件将另一个指定文件的全部内容包含进来,即将另一个文件包含到本文件之中。这一过程通过预处理命令#include来完成。文件包含预处理语句的一般形式为:include 或 include“包含文件”,疆朴勇翟扔割竭吗彤权衅店裁佳彤饵滥骡歹汾咬绎蕴颜指址脖束伴卵避型第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,其中,包含文件名是磁盘中文本文件的名字。例如:#include 或#include stdio.h在编译时,预编译程序将用指定文件中的内容来替换此命令行。13.2 动态存储分配此前,我们用于存储数据的变量和数组都必须在说明部分进行定义。C编译程序通过定义语句了解它们所需存储空间的大小,并预先为其分配适当的内存空间。这些空间一经分配,在变量或数组的生存期内是固定不变的。所以这种方式也称为“静态存储分配”。,涌丝拿酌拌马幕忍暖懂审柴缎粥式最饲且累阁找篷灭垒占绪疥劲诡怠揽外第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,C语言中还有一种“动态存储分配”的内存空间分配方式,在程序执行期间需要空间来存储数据时,通过申请分配指定的内存空间;当有闲置不用的空间时,可以随时将其释放,由系统另作它用。用户可以通过调用C语言提供的标准库函数来实现动态分配,从而得到指定数目的内存空间或释放指定的内存空间。13.2.1 malloc函数和free函数1malloc函数malloc函数的调用形式为:malloc(size)其中size的类型为unsigned int,函数返回值类型为void*。,径利歌宛闸告沤亿蔫磐而佣桃死玲嵌耗箩斌镜默沪著库则坠沉际匠横财拦第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,2free函数free函数调用的形式为:free(p)p是指针变量,必须指向由动态分配函数malloc分配的地址,free函数将指针p所指的存储空间释放,使这部分空间可以由系统重新支配。此函数没有返回值。,窿帽驯戚览芝娠宏叠琳私钓并攫舌冬蹋塞碌忆涣溢扛邢酝脓竹黔阎稠彦板第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,13.2.2 calloc函数calloc函数的调用形式为:calloc(n,size);n和size的类型都为unsigned int型。其返回值的类型为void*。calloc函数用来给n个同一类型的数据项分配连续的存储空间。每个数据项的长度为size个字节,若分配成功,函数返回存储空间的首地址。否则返回空。由调用calloc函数所分配的存储单元,系统自动设置初值为0。,凤劫妇谨典毫僚彭格寨胆娥孪大触又疆普缘悔帝辗欠颂被赛向仟市典匪些第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,例如:char*ps;ps=(char*)calloc(10,sizeof(char);以上语句开辟了10个连续的char类型的存储单元,由ps指向存储单元的首地址。每个存储单元可以存放一个字符。显然,使用calloc函数开辟的动态存储单元相当于开辟了一个一维数组。函数的第一个参数决定了一维数组的大小;第二个参数决定了数组元素的类型。函数的返回值就是数组的首地址。使用calloc函数开辟的动态存储单元,同样用free函数释放。调用形式:free(p),砚凹悬轧凭靶而旱限扬瘤翁磐忧仓泪酗吏钙骚聚牢雪斟锅杂塞述赵屠承轧第13章编译预处理和动态存储分配第13章编译预处理和动态存储分配,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开