第12章--C语言中用户标识符的作用域和存ppt课件.ppt

第12章--C语言中用户标识符的作用域和存ppt课件.ppt

ID:59102629

大小:634.50 KB

页数:27页

时间:2020-09-25

第12章--C语言中用户标识符的作用域和存ppt课件.ppt_第1页
第12章--C语言中用户标识符的作用域和存ppt课件.ppt_第2页
第12章--C语言中用户标识符的作用域和存ppt课件.ppt_第3页
第12章--C语言中用户标识符的作用域和存ppt课件.ppt_第4页
第12章--C语言中用户标识符的作用域和存ppt课件.ppt_第5页
资源描述:

《第12章--C语言中用户标识符的作用域和存ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章用户标识符的作用域和存储类12.1局部变量、全局变量和存储分类12.2局部变量及其作用域和生存期12.3全局变量及其作用域和生存期12.4函数的存储分类变量的作用域:局部变量:在函数内部或复合语句内部定义的变量。全局变量:在函数外部定义的变量。变量的生存期:动态类:在函数内部或复合语句内部定义的变量。静态类:在函数外部定义的变量。定义变量:[存储类别]数据类型变量名;根据变量的存储类别就可以知道变量的作用域和生存期。12.1局部变量、全局变量和存储分类变量的作用域与其定义语句在程序中出现

2、的部位有直接的关系。在函数内部或复合语句定义的变量,称为局部变量。局部变量只在本函数内或复合语句中有效。不同函数中可以使用相同名字的变量。在函数外部定义的变量,称为全局变量。例1:#include“stdio.h”floatf1(inta){intb,c;……}charf2(intx,inty){inti,j;……}voidmain(){inta,b,c;……}例2:#include“stdio.h”voidmain(){intx=10;{intx=20;printf(“%d,”,x);}pri

3、ntf(“%d",x);}12.2局部变量及其作用域和生存期情况1:auto变量(动态的局部变量)系统默认的变量属性就是auto类型,所以通常情况下很少使用关键字auto。auto变量在进入声明该变量的函数时建立,退出该函数时撤销。未赋初值的auto变量其值不确定,称为“无定义”。优点:可在各函数之间造成信息隔离,不同函数中使用了同名变量也不会相互影响,从而可避免因不慎赋值所导致的错误影响到其他函数。例1:intfun(inta){intb,c=3;……}例2:intfun(inta){au

4、tointb,c=3;……}等价情况2:register变量(动态的局部变量)用register说明的变量建议编译程序将变量的值保留在CPU的寄存器中。访问存于寄存器内的值要比访问于内存中的值要快得多。CPU中寄存器的数目是有限的,不能定义任意多个register变量。当没有足够的寄存器来存放指定的变量,或编译程序认为指定的变量不适合放在寄存器中时,将自动按auto变量来处理。#include“stdio.h”intpower(int,registerint);voidmain(){ints;s

5、=power(5,3);printf(“%d”,s);}intpower(intx,registerintn){registerintp;for(p=1;n;n--)p=p*x;returnp;}例1:情况3:静态的局部变量即用关键字static声明的局部变量。在整个程序运行期间,静态局部变量占据着永久性的存储单元。下次调用该函数时,该变量拥有最近一次退出该函数时所拥有的值。静态变量的初始化只执行一次。对于未赋初值的静态局部变量,C编译程序自动给它赋初值0。虽然静态局部变量在函数调用结束后仍

6、然存在,但其他函数是不能引用它的。例:#include“stdio.h”voidmain(){inti,j=2;for(i=0;i<3;i++)printf(“%4d”,function(i));}intfunction(inta){intb=0;b++;c++;return(a+b+c);}staticintc=3;输出结果:789staticintc;输出结果:45612.3全局变量及其作用域和生存期全局变量只有静态一种类别。全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的

7、位置开始,到整个源文件结束为止。如果全局变量与局部变量同名,会出现全局变量被“屏蔽”的现象。一般不提倡使用全局变量。对于全局变量可使用extern和static两种说明符。例:voidfun1(void);voidfun2(void);intsum;/*全局变量*/voidmain(){……sum++;……}voidfun1(void){……sum++;……}inttest;/*全局变量*/voidfun2(void){……sum++;test=1;……}#include“stdio.h”int

8、sum;voidfun(void);voidmain(){sum=10;printf(“**main(1)**:%d”,sum);fun();printf(“**main(2)**:%d”,sum);}voidfun(void){intsum;sum=20;printf(“**fun**:%d”,sum);}例2:例:#include“stdio.h”intd=1;intfun(intp){intd=5;d+=p++;printf(“%d”,d);}voidmain(){inta=3

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

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

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