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