全国计算机等级考试2c课程第8讲 变量的作用域和存储类型

上传人:wt****50 文档编号:55768947 上传时间:2018-10-06 格式:PPT 页数:17 大小:132.50KB
返回 下载 相关 举报
全国计算机等级考试2c课程第8讲 变量的作用域和存储类型_第1页
第1页 / 共17页
全国计算机等级考试2c课程第8讲 变量的作用域和存储类型_第2页
第2页 / 共17页
全国计算机等级考试2c课程第8讲 变量的作用域和存储类型_第3页
第3页 / 共17页
全国计算机等级考试2c课程第8讲 变量的作用域和存储类型_第4页
第4页 / 共17页
全国计算机等级考试2c课程第8讲 变量的作用域和存储类型_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《全国计算机等级考试2c课程第8讲 变量的作用域和存储类型》由会员分享,可在线阅读,更多相关《全国计算机等级考试2c课程第8讲 变量的作用域和存储类型(17页珍藏版)》请在金锄头文库上搜索。

1、全国计算机等级考试 2C课程,第八讲 变量的作用域和存储类型,作者:张旭仟 版权所有 欢迎盗版,2,局部变量,什么叫局部变量 在一个函数内部定义的变量称局部变量,也叫内部变量。内部变量只在本函数范围内有效,即只有在本函数内才能使用这些变量,故称为“局部变量” 。 使用说明: 主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。形式参数也是局部变量。,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,3,局部变量,使用说明: 不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。,例: main() int a,

2、b;a=3; b=4;printf(“main:a=%d,b=%dn“,a,b);sub();printf(“main:a=%d,b=%dn“,a,b); sub() int a,b;a=6; b=7;printf(“sub:a=%d,b=%dn“,a,b); ,运行结果: main:a=3,b=4 sub:a=6,b=7 main:a=3,b=4,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,4,局部变量,使用说明: 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效。,例: #include main() int i;for(i=1;i=10;i+) stati

3、c char j=A;printf(“%c:%d “,j+,i); ,变量j只能在for循环语句的循环体内被调用,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,5,全局变量(外部变量),什么叫全局变量: 函数之外定义的变量称为全局变量,也叫外部变量。 外部变量可以为本文件中其他函数所共用。它的有效范围从定义变量的位置开始到本源文件结束。所以也称全程变量。 注意:应尽量少使用全局变量,因为: 全局变量在程序全部执行过程中都占用着存储单元 全局变量的使用降低了函数的通用性、可靠性和可移植性 全局变量的使用降低了程序的清晰性,使用不当很容易出错,2018/10/6,作者:张旭仟 版权所有 欢

4、迎盗版,6,全局变量(外部变量),#include #define N 10 float Max=0,Min=0; /* 全局变量 */ float average(float array) /* 定义子函数,形参为数组 */ int i;float sum=0;Max=Min=array0;for(i=0;iMax) Max=arrayi;else if(arrayiMin) Min=arrayi;sum=sum+arrayi;return(sum/N); void main() float ave,scoreN;int i;for(i=0;ib?a:b; /*形参a、b作用范围*/retu

5、rn(c); ,运行结果为 8,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,8,变量的存储类别,计算机系统的存储空间可分为三部分: 程序区、动态存储区、静态存储区 变量从作用域来分,可分为 全局变量、局部变量 变量从值存在的时间来分,可分为 动态存储方式:在程序运行期间根据需要进行动态分配存储空间 静态存储方式:在程序运行期间由系统分配固定的存储空间,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,9,变量的存储类别,事实上,变量和函数都具有两个属性: 数据类型和存储类别。 存储类别是指数据在内存中的存储方式。根据变量的存储类别,我们可以知道变量的作用域和生存周期。 C语言中变

6、量的存储类别包括: 自动的(auto); 静态的(static); 寄存器的(register); 外部的(extern)。,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,10,变量的存储类别,用auto声明的变量 不专门声明存储类别的局部变量都是auto(自动)变量。 函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量),都属此类。 自动变量可用关键字auto作存储类别的声明。,例如: int f(int a) /*定义f函数,a为形参 */ auto int b,c=3; /*定义b、c为自动变量 */ ,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,11,变量的

7、存储类别,用static声明局部变量 用关键字static声明的变量被称为静态局部变量。 注意:静态局部变量在函数调用结束后并不立即消失,而是继续保留原值直到程序结束。 说明: 静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。 静态局部变量是在编译时赋初值的,即只赋初值一次,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。 对静态局部变量来说,在定义时不赋初值的话,编译系统会自动为其赋初值。对数值型变量赋值,对字符变量赋空值。 虽然静态局部变量在函数调用结束后仍然存在,但其他函数并不能引用它。,2018/10/6,作者:张旭仟 版权所有

8、欢迎盗版,12,小练习:,1、有以下程序(2010年3月)#include int fun() static int x=1; x*=2; return x;main() int i,s=1;for(i=1;iy?x:y); ,如果不做此声明,则外部变量A和B只能在声明它们之后的程序中引用,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,15,变量的存储类别,用extern声明的外部变量 用extern将外部变量和外部函数的作用域扩展到其他文件。,/*file1.c*/ #include float PI=3.14159; void main() extern float circu(f

9、loat);float r;printf(“Enter the R:“);scanf(“%f“, ,/* file2.c */ #include extern float PI; void circu(float n) float area;area=n*n*PI;printf(“%f,%f,%fn“,n,PI,area); ,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,16,小练习:,2、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(2008年4月) A) auto和register B) extern和register C) auto和static D)static和register 3、设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是(2009年3月) A)auto B)register C)static D)auto或register,2018/10/6,作者:张旭仟 版权所有 欢迎盗版,17,Thank listen!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号