C用户标识符的作用域和存储类课件

上传人:我*** 文档编号:143665895 上传时间:2020-09-01 格式:PPT 页数:23 大小:103.50KB
返回 下载 相关 举报
C用户标识符的作用域和存储类课件_第1页
第1页 / 共23页
C用户标识符的作用域和存储类课件_第2页
第2页 / 共23页
C用户标识符的作用域和存储类课件_第3页
第3页 / 共23页
C用户标识符的作用域和存储类课件_第4页
第4页 / 共23页
C用户标识符的作用域和存储类课件_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C用户标识符的作用域和存储类课件》由会员分享,可在线阅读,更多相关《C用户标识符的作用域和存储类课件(23页珍藏版)》请在金锄头文库上搜索。

1、好好考(),全国计算机等级考试 二级C语言,第15讲 C用户标识符的作用域和存储类,变量的存储属性 局部变量与全局变量 变量的存储类别 函数的存储分类 真题分析,第一节 变量的存储属性,变量是对程序中数据存储空间的抽象 变量的属性 数据类型:变量所特有的数据的性质 存储属性 存储器类型:寄存器、静态存储区、动态存储区 生存期:变量在某一时段存在 作用域:变量在某区域内有效 变量的存储类型 auto -自动型 register-寄存器型 static -静态型 extern -外部型 变量的定义格式: 存储类别 数据类型 变量表;,第二节 局部变量与全局变量,按照变量的作用范围,变量分为: 局部

2、变量 全局变量,第二节 局部变量与全局变量,定义 在一个函数或复合语句内部定义的变量,也称内部变量。 作用范围 在定义该变量的函数或复合语句内有效。,float f1(int a) int b,c; int f2(int x,int y) int b,i,j; main() int m,n; .,说明: 形参是局部变量 main函数的变量也是局部的 不同函数中变量的名字可以相同 复合语句内定义的变量,a,b,c有效,x,y,b,i,j有效,m,n有效,局部变量的说明,局部变量举例复合语句,main() int x=10; int x=20; printf(“%dn ”,x); printf(“

3、%d”,x);,复合语句,运行结果:,20,10,局部变量举例变量同名,main() int x=1; void f1( ),f2( ); f1(); f2(x); printf(“x=%dn”,x); ,运行结果:x=3 x=2 x=1,void f1( ) int x=3; printf(“x=%dt”,x);,void f2(int x) printf(“x=%dt”,+x);,局部变量,局部变量,局部变量,第二节 局部变量与全局变量,定义 一个源文件中,在所有函数之外定义的变量为全局变量。 作用范围 从定义点开始到本源文件结束。,全局变量的说明,int k=1; /*全局变量*/ fl

4、oat f1(int a) int b,c; char c1; /*全局变量*/ int f2(int x,int y) int i,j; double p; /*全局变量*/ main() int m,n; .,c1的作用范围,k的作用范围,P的作用范围,全局变量所作用到的函数,相当于这些函数的公共变量。于是,当一个函数对其值进行改变后,另一个函数使用该变量的值亦相应改变。好处: 增加了函数之间的值传递。 要限制使用全局变量:一是始终占据内存单元;二是由于函数依赖于外部定义的变量,降低了函数的通用性。 在定义点之前的函数。若使用全局(外部)变量,需在函数体内加上extern保留字。 全局和局

5、部变量同名时,在局部变量的作用范围中,全局变量被屏蔽。,全局变量的说明,全局变量举例-函数之间的公共变量,int a,b; main() scanf(%d,%d, ,运行结果:,a=2,b=5,a=5,b=2,全局变量举例-局部与全局变量同名,int x=1; main() func(x); printf(“%dn”,x); func(int x) x=3;,运行结果:1,同名时,在局部变量的作用范围里,全局变量被屏蔽,第三节 变量的存储类别,动态变量与静态变量 存储方式 静态存储:程序运行期间分配固定存储空间 动态存储:程序运行期间根据需要动态分配存储空间 变量的生存期 静态变量:从程序开始

6、执行到程序结束 动态变量:从包含该变量定义的函数开始执行至函数执行结束,动态变量与静态变量 内存区,第三节 变量的存储类别,第三节 变量的存储类别,编译时赋初值,只赋一次,每次函数调用时,赋初值,自动赋初值0或空字符,不确定,未赋初值,局部变量默认为auto型 register型变量不提倡多用 static局部变量具有全局变量的寿命和局部变量的可见性 static局部变量具有可继承性 extern不是变量定义,可扩展全局变量作用的作用范围,main() void add(void); add(); add(); add(); void add(void) int x=0; x+; printf

7、(“%dn”,x); ,运行结果:1 1 1,main() void add(void); add(); add(); add(); void add(void) static int x=0; x+; printf(“%dn”,x); ,运行结果:1 2 3,auto与static局部变量举例,全局变量举例:extern功能,main() void gx(),gy(); extern int x,y; printf(“1: x=%dty=%dn”,x,y); y=246; gx(); gy(); void gx() extern int x,y; x=135; printf(“2: x=%d

8、ty=%dn”,x,y); int x,y; void gy() printf(“3: x=%dty=%dn”,x,y); ,运行结果: 1: x=0 y=0 2: x=135 y=246 3: x=135 y=246,说明x,y在别处已经定义过,此处的作用是扩展全局变量x、y的作用范围.,说明x,y在别处已经定义过,此处的作用是扩展全局变量x、y的作用范围.,用extern与static说明全局变量,第四节 函数的存储分类,用extern说明函数 用 static 说明函数,真题分析,2008年4月 (39)在C 语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。 A)auto 和register B)extern 和register C)auto 和static D)static 和register,答案:A,真题分析,2008年9月 (11)以下程序的输出结果是【11】。 #include int fun(int x) static int t=0; return(t+=x); main() int s,i; for(i=l;i=5;i+) s=fun(i); printf(%dn,s); ,答案:15,t=1+2+3+4+5,知识点分析,题型:多以选择或填空的形式考核 重点掌握: 1.局部与全局变量的区别 2.变量的存储类别 3.静态局部变量与auto的区别,

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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