


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九讲 变量类别与编译预处理第九讲变量类别与编译预处理引言一、教学目的本讲主要介绍了全局变量和局部变量以及自动变量、静态变量和寄存器变量的特点和关系,介绍了编译预处理命令中的宏定义和文件包含,要求大家掌握局部变量和全局变量的特点和使用方法,了解自动变量和静态变量的区别,掌握不带参数的宏和带参数的宏的使用,熟练运用“文件包含”功能。二、知识要点1.全局变量和局部变量(1)局部变量的特点(2)全局变量的特点(3)全局变量的应用2.自动变量、静态变量和寄存器变量(1)自动变量的存储形式(2)静态变量的存储形式和使用注意事项(3)寄存器变量的存储形式3.宏定义(1)不带参数的宏定义(2)带参数的宏定义4.文件包含文件包含的作用和使用方法三、边用边学9.1全局变量和局部变量C语言根据变量作用域的不同,将变量分为局部变量和全局变量。一、局部变量在函数内部定义的变量称为局部变量,它只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它。二、全局变量在所有函数外部定义的变量称为全局变量。全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享。全局变量主要用于函数之间数据的传递。具体应用在两方面:一是函数可以将结果保存在全局变量中,这样函数得到多个执行结果,而不局限于一个返回值;二是由于函数可以直接使用全局变量的数据,从而减少了函数调用时的参数。9.2自动变量、静态变量和寄存器变量C语言的变量根据分配的存储空间的不同,可以分为寄存器变量、静态变量和自动变量。一、自动变量自动变量的存储空间为内存中的动态数据区,该区域中的数据随程序需要动态地生成或释放。在函数体内或者复合语句内定义的局部变量都属于自动变量。自动变量的类型修饰符auto放在变量的类型说明之前。但是auto一般是不写的。局部变量只要不专门说明是static存储类型,都确定为自动变量,采用动态存储方式。自动变量的特点是当程序执行到自动变量的作用域时,才为自动变量分配存储空间,并且定义自动变量的函数执行结束后,程序将释放该自动变量的存储空间,留给其它自动变量使用。二、静态变量静态变量的存储空间为内存中的静态数据区,该区域中的数据在整个程序的运行期间一直占用这些存储空间,直到整个程序运行结束。所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。静态变量的特点是在程序的整个执行过程中始终存在,但是在它作用域之外不能使用。即静态变量的生存期就是整个程序的运行期。在选择使用静态局部变量还是自动变量,可以从以下两点考虑:一是如果需要在两次函数调用之间保持上一次函数调用结果,可以使用局部静态变量;二是如果在每次调用函数时都必须对局部变量初始化,选择自动变量。但是实际上局部静态变量占用内存时间较长,并且可读性差,因此,除非必要,尽量避免使用局部静态变量。三、寄存器变量为了提高运算速度,C语言允许将一些频繁使用的局部变量定义为寄存器变量,这样程序尽可能地为它分配寄存器存放,而不用内存。寄存器变量只要在定义时加上类型修饰符register即可。四、用extern、static声明的全局变量如果组成这一个程序的几个文件需要用到同一个全局变量,只要在其它引用该全局变量的源程序文件中说明该全局变量为extern即可。反之,如果希望一个源程序文件中的全局变量仅限于该文件使用,只要在该全局变量定义时的类型说明前加一个static。9.3宏定义C语言提供的预处理命令主要有:宏定义、文件包含和条件编译。其中宏定义分为带参数的宏定义和不带参数的宏定义。一、不带参数的宏定义不带参数的宏定义的一般形式为#define标识符字符串它的作用是在编译预处理时,将源程序中所有标识符替换成字符串。无参数的宏定义使用时,要注意以下几个问题:(1)宏名一般用大写字母,以便与变量名的区别。(2)在编译预处理时宏名与字符串进行替换时,不作语法检查。(3)宏名的有效范围是从定义位置到文件结束。如果需要终止宏定义的作用域,可以用#undef命令。(4)宏定义时可以引用已经定义的宏名。(5)对程序中用双引号扩起来的字符串内的字符,不进行宏的替换操作。二、带参数的宏定义带参数的宏定义的一般形式为#define标识符(参数表)字符串它的作用是在编译预处理时,将源程序中所有标识符替换成字符串,并且将字符串中的参数用实际使用的参数替换。带参数的宏定义使用时,要注意以下几个问题:(1)在宏定义时,宏名和参数之间不能有空格。(2)一般在定义宏时,字符串中的形式参数外面加一个小括号。9.4文件包含“文件包含”用于一个源程序文件包含另外一个源程序文件的全部内容。“提供的文件包含预处理命令的一般形式:#include或者#include“文件名”“文件包含”的使用时要注意:(1)一个#include命令只能指定一个被包含的文件。(2)“文件包含”可以嵌套。作业及上机练习1.使用全局变量,编写程序实现通过调用一个函数double calculate(double x,double y),可以得到两个数的和、差、积、商。2.应用局部静态变量实现输入n,输出1+2+3+ +n的结果。3.输出Fibonacci数列的前20项的值。应用局部静态变量的方法。4.定义带参数的宏MAX(a,b)、MIN(a,b)、ABS(a)分别求两个数的最大值、最小值和一个数的绝对值。5.定义宏名Leap_Year(year)和Isup
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训课程毕业总结
- 地埋式箱泵施工方案
- 2026届内蒙古磴口县化学九上期末学业水平测试试题含解析
- 中介月度工作总结
- 2026届九江市重点中学化学九上期末考试模拟试题含解析
- 2026届-度河北省正定县化学九上期中综合测试模拟试题含解析
- 形体矫正培训课件
- 沥青摊铺安全规范
- 山东省济南市2026届化学九上期中质量跟踪监视模拟试题含解析
- 企业工作总结培训
- 社会工作行政(第三版)课件全套 时立荣 第1-11章 社会服务机构- 社会工作行政的挑战、变革与数字化发展
- 《走近科学家》课件
- 《基础护理学(第七版)》考前强化模拟练习试题库500题(含答案)
- 小学数学与科学素养的融合教育
- 4.3 海-气相互作用课件【知识精研】高二上学期地理鲁教版(2019)选择性必修1
- 苏科版九年级上册数学第一次月考试卷附答案
- 2025年蜀道集团招聘笔试参考题库含答案解析
- 全套55讲-鱼C论坛小甲鱼Python课后题-20211129034856
- 浙江省温州市“摇篮杯”2022-2023学年高一下学期化学竞赛试卷 含解析
- 24年追觅在线测评28题及答案
- 部编版二年级语文上册《植物妈妈有办法》教学课件2篇21
评论
0/150
提交评论