- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13 章 编译预处理与动态存储分配
第13 章 编译预处理和动态存储分配 Top77 不带参数的宏替换 Top77 不带参数的宏替换 考点 一般定义形式为:#define 宏名 字符串 Top78 不带参数的宏替换 真题分析 (2006年9月)若要求定义具有10 个int 型元素的一维数组a,则下列定义语句中错误的是—— Top78 不带参数的宏替换 真题分析 (2005-9)下列程序的功能是:给r 输入数据后计算半径为r 的圆面积s。程序在编译时出错,出错的原因是—— Top78 不带参数的宏替换 真题分析 (2005-4)下列程序的输出结果是—— Top78 带参数的宏替换 Top78 带参数的宏替换 带参的宏与函数区别 Top78 带参数的宏替换 真题分析 (2007年4月)有一个名为init.txt的文件,内容如下 Top78 带参数的宏替换 真题分析 (2005年9月)有下列程序,程序运行后的输出结果是———— Top78 带参数的宏替换 真题分析 (2005年4月)下列叙述中正确的是—— A、预处理命令行必须位于源文件的开头 B、在源文件的一行上可以有多条预处理命令 C、宏名必须用大写字母表示 D、宏替换不占用程序的运行时间 Top79 对编译预处理的一些说明 Top79 对编译预处理的一些说明 真题分析 (2006年4月)下列叙述中正确的是—— A、预处理命令行必须位于C 源程序的起始位置 B、在C 语言中,预处理命令行都以#开头 C、每个C 程序必须在开头包含预处理命令行:#includestdio.h D、 C 语言的预处理不能实现宏定义和条件编译的功能 Top79 对编译预处理的一些说明 练习题 1、以下叙述中正确的是—— A、预处理命令必须位于源文件的开头 B、在源文件的一行上可以有多条预处理命令 C、宏名必须用大写字母表示 D、宏替换不占用程序的运行时间 Top80 动态存储分配 静态存储分配:用于存储数据的变量和数组都是在说明部分定义的,C编译系统通过定义语句了解它们所需要的空间,并预先为其分配适当的存储单元。这些存储单元一经,在变量或数组的生存期内是固定不变的。 动态存储分配:在程序执行期间,通过”申请“得到指定的内存单元;当有闲置不用的空间时,可以随时将其释放,由系统另作它用。 Top80 动态存储分配 (1)malloc函数,其返回值类型为void。 调用形式为:malloc(size) 要求size的类型为unsigned int 作用:用来分配size个字节的存储空间,返回一个指针指向存储区首地 址的基类型为void的地址。 Top80 动态存储分配 注意: 由动态存储分配得到的存储单元没有名字,只能靠指针来引用它。一旦指针改变指向,则原存储单元及所存数据都将无法引用。 通过调用malloc函数所分配的单元动态存储单元中没有确定的初值。 在动态申请存储空间时,若不能确定数据类型所占字节数,可通过sizeof运算符来求得。例如: pi=(int *)malloc(sizeof(int)); pf=(float *)malloc(sizeof(float)); 由系统来计算指定类型所占的字节数,有利于程序的移植。 Top80 动态存储分配 (3)calloc函数,返回值类型为void。 调用形式:calloc(n,size) 要求n和size都是unsigned int。 作用:用来给n个同一类型的数据项分配连续的存储空间,每个数据项 长度为size字节。 Top80 动态存储分配 真题分析 (2007年4月)以下程序的输出结果是—— Top80 动态存储分配 真题分析 (2005年9月)已有定义:double *p;,请写出完整的语句,利用malloc 函数使p 指向一个双精度型的动态存储单元—— * * Top78 带参数的宏替换 Top79 对编译预处理的一些说明 Top80 动态存储分配 说明: 宏定义与一般变量定义含义不同,它只作字符替换, 并不分配内存空间,也不能认为是赋值。 “#”表示这是一条预处理命令 define为宏定义命令 宏名为一个合法的标识符 字符串可以是常数、表达式或语句,或是多条语句 2.宏展开:预编译时,用宏体替换宏名---不作语法检查 3.引号中的内容与宏名相同也不置换 例 #define PI 3.14159 printf(“2*PI=%f\n”,PI*2); 宏展开:printf(“2*PI=%f\n”,3.14159*2); 4.宏定义可嵌套,不能递归 例 #define MAX MAX+10 (?) 5.宏定义中使用必要的括号() 例 #define WIDTH 80
文档评论(0)