C语言 变量的作用域和存储类课件.ppt

C语言 变量的作用域和存储类课件.ppt

ID:57056857

大小:150.50 KB

页数:32页

时间:2020-07-30

C语言 变量的作用域和存储类课件.ppt_第1页
C语言 变量的作用域和存储类课件.ppt_第2页
C语言 变量的作用域和存储类课件.ppt_第3页
C语言 变量的作用域和存储类课件.ppt_第4页
C语言 变量的作用域和存储类课件.ppt_第5页
资源描述:

《C语言 变量的作用域和存储类课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十二章变量的作用域和存储类第十二章变量的作用域和存储类在C语言中,变量必须先定义,后使用。但定义语句应该放在什么位置?在程序中,一个定义了的变量是否随处可用?这些问题牵涉到变量的作用域。经过赋值的变量是否在程序运行期间总能保存其值?这又牵涉到变量的生存期。本章将对这些问题进行详细的讨论。12.1变量的作用域和存储类别12.1.1变量的作用域变量的作用域即变量在程序中的有效范围。即在程序的什么范围内变量可以被识别和使用。根据作用域的大小,变量可分为:局部变量:在函数内部或复合语句内部定义的变量(函数的形参也属于局部变量)。全局变量:在函数外部定义

2、的变量。#includeinta,b;a=2;b=3;main(){ints;s=fun(a,b);printf(“s=%d”,s);}intfun(intx,inty){intz;z=x+y;returnz;}显然,变量的作用域与其定义语句在程序中出现的位置有直接关系。12.1变量的作用域和存储类别12.1.2变量的存储类别变量的生存期通过存储类别来设置,存储类别规定了变量在内存中的存储方法。存储类别分为两类:自动类:使用auto(自动)、register(寄存器)说明符。全局变量不能是自动类。静态类:使用static(静

3、态)说明符。局部变量和全局变量皆可为静态类。变量的存储类别动态存储根据需要临时分配存储空间,离开即释放静态存储在程序运行期间分配固定的存储空间不释放程序区静态存储区动态存储区形参、自动变量(auto、register)全局变量、静态(static)变量存储类别说明符通常与类型名一起出现,它们可以放在类型名的左边,也可以放在类型名的右边。例如:autointa,b;也可写成:intautoa,b;12.2局部变量的作用域和生存期12.2.1auto变量当在函数内部或复合语句内部定义变量时,如果没有指定存储类,或使用了auto说明符,系统就认为所定义

4、的变量具有自动类别。例如:inta;等价于:autointa;“自动”体现在:进入语句块时自动申请内存,退出时自动释放内存对它们分配和释放存储空间的工作由编译系统自动处理,故称其为自动变量自动类局部变量的作用域是从定义的位置起,到函数体(或复合语句)结束为止。voidfun(inta)/*形参的缺省类别是auto*/{inti;/*形参a和变量i作用域是整个fun函数*/……if(i>0){intn;/*变量n的作用域仅限于if子句内*/……printf(“%d”,n);}……}auto变量示例doublefun1(doublep1){int

5、p2,p3;.....}charfun2(charp4){charp5,p6;......}main(){floatx,y;......}p1、p2、p3的有效区p4、p5、p6的有效区x、y的有效区inta,b;a、b有效区intf1(inta,intb){intm;m=a*b;return(m);}例:在函数内部m为局部变量,形参a,b也是局部变量,只在函数f1()中有效。随函数f1()的建立而建立,并随其消亡而消亡。main(){intx=10;if(x==10){chars=‘a’;printf(“%c",s);}printf(“%d

6、",x);}在复合语句内例:s为局部变量,只在if语句块中有效局部变量s在if的入口处建立,在出口处消亡局部变量只在定义它的函数内有效,即在此函数之外是不能使用这些局部变量的。(main()同样)main(){inta;a=10;fun();}fun(){intb;b=a*a;/*变量a只在主函数内有效*/printf(“%d”,b);}如:main(){inta=10;fun();printf("main():a=%d",a);}fun(){inta=20;printf("fun():a=%d",a);}不同函数中定义的局部变量允许

7、取相同的变量名。运行结果:fun():a=20main():a=10说明:局部变量的定义必须放在所在函数体(或复合语句)中全部可执行语句之前所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在函数体(或复合语句)时消失,这就是自动类局部变量的“生存期”。当再次进入函数体(或复合语句)时,系统将为它们另行分配存储单元。因此变量的值不可能被保留。使用局部变量的优点:可以在各函数之间造成信息隔离,不同函数中使用了同名的变量也不会相互影响,从而可避免因不慎赋值所导致的错误影响到其他函数。12.2局部变量的作用域和

8、生存期12.2.2静态存储类的局部变量当在函数体(或复合语句)内部用static来说明一个变量时,可以称该变量为静态局部变量。例如:st

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

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

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