预处理和动态存储

预处理和动态存储

ID:47004005

大小:236.00 KB

页数:39页

时间:2019-12-03

预处理和动态存储_第1页
预处理和动态存储_第2页
预处理和动态存储_第3页
预处理和动态存储_第4页
预处理和动态存储_第5页
资源描述:

《预处理和动态存储》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、专题之九编译预处理和动态存储管理西南石油大学计算机科学学院主讲:张耀文考纲分析编译预处理1、宏定义:不带参数的宏定义;带参数的宏定义。2、"文件包含"处理。分析:这部分主要讨论了预编译,一般会出1-2个选择题和1-2个填空题。这部分好掌握,明确两条:1、宏定义#define后面的就直接带入,再计算。2、头文件中的ifndef/define/endif的作用是防止该头文件被重复引用。C语言的预处理程序负责分析和处理以“#”为首字符的预处理控制行。预处理是在编译前进行的。C提供的预处理功能主要有以下三种

2、:1.宏定义2.文件包含3.条件编译分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。历年真题必学真题1:下列程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。【2005.9】main(){intr;floats;scanf(''%d'',&r);s=π*r*r;printf(''s=%f'',s);}出错的原因是()。A)注释语句书写位置错误B)存放圆半径的变量r不应该定义为整型C)输出语句中格式描述符非法D)计算因面积的

3、赋值语句中使用了非法变量真题2:下列4个程序中,完全正确的是()。【2006.4】A)#includeB)#includemain();main(){/*programming*/{/*/programming/*/printf(''programming!'');}printf(''programming!'');}C)#includeD)includemain()main(){/*/programming*/*/{/

4、*programming*/printf(''programming!'');}printf(''programming!'');}真题3:以下叙述中错误的是()。【2008.4】A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的1宏定义(宏替换)1.1不带参数的宏定义简单的字符串替换一般形式#define宏名字符串通常“宏名(宏标识符)”用大写字母表

5、示,用空格分开,末尾不带“;”,以换行符结束。define预处理命令不仅可以定义符号常量及字符串,而且也可以定义带参数的宏。例#definePI3.1415926main(){floati,s,r,v;printf("inputraDiuS∶");scanf("%f",&r);i=2.0*PI*r;s=PI*r*r;v=3.0/4*PI*r*r*r;printf("l=%10.4fS=%10.4fv=%10.4f",i,s,v);}(1)宏名一般习惯用大写字母表示,以便与变量名相区别。但

6、这并非规定,也可用小写字母。(2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。简单不易出错,一改全改。使用宏定义,可以提高程序的通用性.(3)宏定义是用宏名代替一个字符串,也就是作简单的置换,不作正确性检查。(4)宏定义不是C语句,不必在行末加分号。(5)#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。(6)可以用#undef命令终止宏定义的作用域#defi

7、nege8.8main(){

8、…GE的有效范围}#undefgef1(){}由于#undef的作用,使GE的作用范围在#undef行处终止,因此在f1函数中,ge不再代表8.8。这样可以灵活控制宏定义的作用范围。(7)在进行宏定义时,可以引用已定义的宏名,可以层层置换。例#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rmain(){printf("L=%fs=%f",L,S);}(8)对程序中用双括号括起来的字符串内的字符,即

9、使与宏名相同,也不进行置换。(9)宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。例如:#defineN10#defineTRUE-1#defineFALSE0#defineON1#defineOFF0#defineYES1#defineNO0#definePI3.14159#defineE2.7183#defineBLACK0#defineBLUE1#defineBEGIN{#defineEND}1.2带参数的宏定义与

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。