第5章作用域与存储类型.ppt
《第5章作用域与存储类型.ppt》由会员分享,可在线阅读,更多相关《第5章作用域与存储类型.ppt(30页珍藏版)》请在课桌文档上搜索。
1、第5章 作用域和存储类型,5.1 作用域5.2 变量的存储类型5.3 编译预处理,5.1.1 作用域,作用域是变量在程序中可引用的区域。作用域共分成块作用域、文件作用域、函数声明(原型)作用域、函数作用域、类作用域五种。1块作用域 复合语句是一个块。复合语句中定义的变量,作用域仅在该复合语句中。,5.1.1 作用域,【例5.1】输入两数,按从大到小的顺序保存,并输出结果。#includevoid main()int a,b;/a、b具有函数作用域 coutab;cout=a)int t;/t具有块作用域 t=a;a=b;b=t;/交换a,b的值 couta=atb=bendl;/t已经无效,5
2、.1.1 作用域,2文件作用域 文件作用域也称全局作用域。定义在所有函数之外的变量,具有文件作用域,作用域为从定义处到整个源文件结束。文件中定义的全局变量和函数都具有文件作用域。3函数声明作用域 函数声明不是定义函数,在作函数声明时,其中的形参作用域只在声明中,即作用域结束于右括号。正是由于形参不能被程序的其他地方引用,所以通常只要声明形参个数和类型,形参名可省略。,5.1.1 作用域,4函数作用域 函数中定义的变量,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域。5类作用域 在介绍类和对象时,可知类作用域是指类定义范围(包括类的声明部分和相应成员函数实现整个范围)。在该范
3、围内,类的成员函数对数据成员有无限访问权限。,5.1.2 局部变量与全局变量,一、局部变量,下列变量是局部变量:1、在一个函数内部定义的变量;2、函数的形式参数;3、在某个复合语句中定义的变量;,float f1(int a)int b,c;Void main()int m,n;,b,c有效,m,n有效,a有效,main()int a,b,c;int d;d=a+b;,d有效,5.1.2 局部变量与全局变量,一、局部变量,说明:、局部变量只在自己范围内有效;2、如果局部变量的有效范围有重叠,则有效范围小的优先;,main()int a,b,c;int c;c=a+b;,局部优先,C有效,二、全
4、局变量,5.1.2 局部变量与全局变量,在函数之外定义的变量(外部变量)是全局变量,全局变量的有效范围是:从定义变量的位置开始到源文件结束,7.7 局部变量与全局变量,二、全局变量,例:编写一个函数实现同时返回10个数的最大和最小值,分析:用一个函数返回两个数据,除了用函数值外,可以借助于全局变量,可见,全局变量可以减少函数的参数,5.1.2 局部变量与全局变量,#include#include#include int min;/全局变量minint find()int max,x;x=rand()%101+100;/产生一个100,200之间的随机数x printf(“%d”,x);max=
5、x;min=x;/设定最大数和最小数 for(int i=1;i max)max=x;/若新产生的随机数大于最大数,则进行替换 if(x min)min=x;/若新产生的随机数小于最小数,则进行替换 return max;,void main()int m=find();printf(“n最大数:%d,最小数:%dn“,max,min);,7.7 局部变量与全局变量,二、全局变量,说明:,、利用全局变量可以在函数间传递参数。、应尽量少用全局变量、如果全局变量与局部变量同名,则局部变量优先,5.1.3 动态变量与静态变量,全局变量和局部变量:变量的作用域,静态存储变量和动态存储变量:变量的存储类
6、别,即生存期,内存中供用户使用的存储空间包括:程序区 静态存储区:编译时分配空间动态存储区:执行时分配空间,变量或函数的属性:,作业:,P90:四、3、4P108:一、2,5.2 变量的存储类别,1、自动类型:存储在动态存储区,用auto说明,如:int func1(int a)auto int b,c=3;,通常auto可以省略,形参a,变量b、c都是自动变量调用该函数时,系统给它们分配存储空间,函数调用结束时自动释放存储空间。,自动类型、寄存器类型的变量属于动态变量;静态类型、外部类型的变量属于静态变量。,5.2 变量的存储类别,1、自动类型:,【例5.5】使用自动变量的示例。#inclu
7、de void main()int x=5,y=10;/自动变量x,y for(int k=1;k=2;k+)auto int m=0,n=0;/自动变量m,n m=m+1;n=n+x+y;printf(m=%dtn=%dn“,m,n);,5.2 变量的存储类别,2、寄存器类型(register),计算机中的寄存器的个数是有限的 寄存器变量对寄存器的占用是动态的 有的系统将寄存器变量转化为自动变量处理,而有的系统会自动设置寄存器变量,5.2 变量的存储类别,3、静态类型(static),静态局部变量属于静态存储类别,在程序整个运行期间都不释放存储空间。静态局部变量在编译时赋初值(仅赋一次值)如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作用 存储 类型

链接地址:https://www.desk33.com/p-747361.html