c语言中用户标识符的作用域和存储类课件.ppt

c语言中用户标识符的作用域和存储类课件.ppt

ID:57011711

大小:138.00 KB

页数:40页

时间:2020-07-26

c语言中用户标识符的作用域和存储类课件.ppt_第1页
c语言中用户标识符的作用域和存储类课件.ppt_第2页
c语言中用户标识符的作用域和存储类课件.ppt_第3页
c语言中用户标识符的作用域和存储类课件.ppt_第4页
c语言中用户标识符的作用域和存储类课件.ppt_第5页
资源描述:

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

1、C语言中用户标识符的作用域和存储类第十二章局部变量、全局变量存储的分类auto、register变量函数的存储分类本章要点§12局部变量和全局变量§12.1局部变量在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。这称为“局部变量”。floatf1(inta)/*函数f1*/{intb,c;…a、b、c有效}charf2(intx,inty)/*函数f2*/{inti,j;x、y、i、j有效}voidmain()/*主函数*/{int

2、m,n;…m、n有效}(1)主函数中定义的变量(m,n)也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。(2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。例如,上面在f1函数中定义了变量b和c,倘若在f2函数中也定义变量b和c,它们在内存中占不同的单元,互不混淆。(3)形式参数也是局部变量。例如上面f1函数中的形参a,也只在f1函数中有效。其他函数可以调用f1函数,但不能引用f1函数的形参a。(4)在一个函数内部,可以在复合语句中定义变量,这些变

3、量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。说明voidmain(){inta,b;…{intc;c=a+b;c在此范围内有效a,b在此范围内有效…}…}§12.2全局变量在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,外部变量是全局变量(也称全程变量)。全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。intp=1,q=5;/*外部变量*/floatf1(inta)/*定义函数f1*/{intb,c;…}charc1,c2;/*外部变量*/c

4、harf2(intx,inty)/*定义函数f2*/{inti,j;全局变量p,q的作用范围…全局变量c1,c2的作用范围}voidmain()/*主函数*/{intm,n;…}例12.1有一个一维数组,内放10个学生成绩,写一个函数,求出平均分、最高分和最低分。#includefloatmax=0,min=0;//全局变量voidmain(){floataverage(floatarray[],intn);floatave,score[10];inti;for(i=0;i<10;i++)scanf(

5、"%f",&score[i]);ave=average(score,10);printf("max=%6.2fmin=%6.2faveage=%6.2f",max,min,ave);}floataverage(floatarray[],intn)//定义函数,形参为数组{inti;floataver,sum=array[0];max=min=array[0];for(i=1;imax)max=array[i];elseif(array[i]

6、];sum=sum+array[i];}aver=sum/n;return(aver);}运行情况如下:9945789710067.589926643↙max=100.00min=43.00average=77.65建议不在必要时不要使用全局变量,原因如下:①全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。②使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。在各个函数执行时都可能改变外部变量的值,程序容易出错。因此,要限制使用全局变量。③它使函数的通用性降低

7、了,因为函数在执行时要依赖于其所在的外部变量。如果将一个函数移到另一个文件中,还要将有关的外部变量及其值一起移过去。但若该外部变量与其他文件的变量同名时,就会出现问题,降低了程序的可靠性和通用性。一般要求把C程序中的函数做成一个封闭体,除了可以通过“实参——形参”的渠道与外界发生联系外,没有其他渠道。例12.2外部变量与局部变量同名#includeinta=3,b=5;//a,b为外部变量——a,b作用范围voidmain(){inta=8;//a为局部变量——局部变量a作用范围intmax(inta,i

8、ntb);printf("%d",max(a,b));//全局变量b的作用范围}intmax(inta,intb)/*a,b为局部变量*/{intc;c=a>b?a:b;//形参a、b作用范围return(c);}运行结果为8§12变量的存储类别§12.1动态存储方式与静态存储方式前面已介绍了从变量

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

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

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