C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt

C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt

ID:50020075

大小:387.50 KB

页数:77页

时间:2020-03-07

C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt_第1页
C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt_第2页
C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt_第3页
C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt_第4页
C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 张淑华 朱丽莉C语言程序设计9.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章变量、函数的属性和编译预处理9.1变量的存储类型9.2变量的作用域9.3内部函数和外部函数9.4编译预处理9.1变量的存储类型9.1.1变量的存储类型含义变量的存储类型:指的是变量的存储方式。包括:1)系统何时为变量开辟和撤销存储空间。反映的是变量存储空间存在的时间周期即生存期。2)系统为变量开辟的存储空间在计算机的哪个部件。反映的是变量值的存放位置。9.1.2变量的存储类型分类从变量的生存期角度来划分,变量分为静态存储变量和动态存储变量:1)静态存储变量:变量的生存期为程序执行的整个过程,在该过程中占有固定的存储空间,也称永久存储变量,整个程序结束后变量的存储空间才被释放。

2、2)动态存储变量:程序运行期间根据需要进行动态的分配存储空间的变量。变量的生存期为程序运行期间的某一段时间。也就是说,程序运行期间的某一段时间如果需要使用变量则系统为其开辟存储空间,不需要时其存储空间被释放。根据变量值存放位置的不同,变量分为内存变量和寄存器变量。变量值的存储部件:RAM和寄存器(CPU中)。供用户使用的RAM存储空间分为三部分:程序区、静态存储区、动态存储区。RAM的用户区1)程序区:用于存放用户程序代码。2)静态存储区:用于存放存储空间是固定的,使用该变量的程序运行结束后才释放存储空间的用户程序中的变量。3)动态存储区:用于临时存放数据的内存单元,该内存区中的数

3、据可以不断地被另外的变量值覆盖。变量的存储类型标识符:auto(自动)static(静态)register(寄存器)extern(外部)变量定义的一般形式:存储类型标识符数据类型标识符变量表列;说明:存储类型标识符和数据类型标识符位置可以互换,没有先后顺序。1.自动变量(auto)被说明为auto的自动变量在程序运行期间由系统根据需要动态的在内存动态存储区中为其开辟和释放存储单元,属于内存动态存储变量。自动变量是在程序运行期间赋初值的,未赋初值时,自动变量的值是不确定的,即为随机值。2.静态变量(static)在编译阶段被系统在内存的静态存储区分配了一定的内存单元,程序运行期间,它

4、占据一个永久性的存储单元,直到整个程序运行结束才释放其存储单元。静态变量是在程序的编译阶段赋初值的,程序运行期间不再赋初值。未赋初值的静态变量,C语言编译程序将其自动赋值为0(整型变量)、0.0(实型变量)或者空字符(字符型变量)。3.寄存器变量(register)寄存器变量也属于动态存储变量,register型变量的值存储在CPU的通用寄存器中,为了提高运算速度,一般把使用较频繁的变量定义成register型变量。说明:有的系统只允许将int、char和指针(在第10章介绍)型变量定义为寄存器变量。另外,计算机中可供寄存器变量使用的寄存器数量很少,有些计算机甚至根本不允许变量的值

5、在寄存器中存储,当系统没有足够的寄存器时,register型的变量就被当做auto型变量来处理。当今的优化编译系统能够自动将使用频繁的变量的值存放在寄存器中,而不需要程序设计者指定。寄存器变量是在运行时赋初值的,未赋初值时,寄存器变量的值是不确定的,即为随机值。4.外部类型(extern)extern不能用于定义变量,但可以用来声明变量。例如:autofloata;staticcharb;定义变量a为自动单精度变量定义变量b为静态字符型变量9.2变量的作用域9.2.1局部变量及其作用域变量的作用域:可以合法使用变量的区域。从作用域的角度将变量划分为局部变量和全局变量。局部变量(内部

6、变量):在函数内部或复合语句中定义的变量。局部变量的存储类型有auto、static、register三种。当局部变量的存储类型为auto型变量时,定义时auto可以省略。例如:voidmain(){intx;/*x为局部变量,定义时省略auto*/…}等价于:voidmain(){autointx;…}在一个函数内部定义的变量,其作用域为定义点到本函数体结束;在一个复合语句中定义的变量,它的作用域为本复合语句内部。函数的形参也是局部变量,其作用域为所在的函数。在不同函数中可以使用相同名字的变量,由于它们所在的函数不同,其作用域是不同的,虽然名字相同但是它们代表的是不同的变量,彼此

7、之间没有联系。C语言规定,在同一个函数内部定义的同名局部变量,作用域小的变量屏蔽作用域大的同名变量。也就是说在作用域小的范围内使用同名变量时,作用域涵盖这个范围的同名变量不起作用。【例9.1】不同函数中的同名变量举例。#includevoidmain(){inta,b;intsub();a=3;b=4;printf("main:a=%d,b=%d",a,b);sub();printf("main:a=%d,b=%d",a,b);}sub(){

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

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

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