C语言学习第八章(中).ppt
《C语言学习第八章(中).ppt》由会员分享,可在线阅读,更多相关《C语言学习第八章(中).ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 1 1变量的作用域变量的作用域与变量的存储类别与变量的存储类别 第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 2 28.8 局部变量和全局变量局部变量和全局变量8.8.1 局部变量局部变量n内部变量:内部变量:n在在一一个个函函数数内内部部定定义义的的变变量量称称内内部部变变量量。它它只只在在本本函函数数范范围围内内有有效效,即即:只只有有在在本本函函数数内内才才能能使使用用这这些些变变量量,故称为故称为“局部变量局部变量”。n f
2、loat f1(int a)/*函数函数f1 */int b,c;/*a、b、c有效有效 */char f2(int x,int y)/*函数函数f2 */int i,j;/*x、y、i、j有效有效 */void main()/*主函数主函数 */int m,n;/*m、n有效有效 */第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 3 38.8 局部变量和全局变量局部变量和全局变量8.8.1 局部变量局部变量n内部变量:内部变量:n主主函函数数中中定定义义的的变变量量只只在在主主函函数数中中有有效效,而而不不因因为为在在主主
3、函函数数中中定定义义而而在在整整个个文文件件或或程程序序中中有有效效。主主函数也不能使用其他函数中定义的变量。函数也不能使用其他函数中定义的变量。n不不同同函函数数中中可可以以使使用用相相同同名名字字的的变变量量,它它们们代代表表不同的对象不同的对象,互不干扰。互不干扰。n形式参数也是局部变量。形式参数也是局部变量。n在在一一个个函函数数内内部部,可可以以在在复复合合语语句句中中定定义义变变量量,这这些些变变量量只只在在本本复复合合语语句句中中有有效效,这这种种复复合合语语句句也也称称为为“分程序分程序”或或“程序块程序块”。第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学
4、院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 4 48.8 局部变量和全局变量局部变量和全局变量8.8.1 局部变量局部变量n内部变量:内部变量:nvoid main()int a,b;int c;c=a+b;c在此范围内有效在此范围内有效 a,b在此范围内也有效在此范围内也有效 n复合语句也称为复合语句也称为“分程序分程序”或或“程序块程序块”。第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 5 58.8 局部变量和全局变量局部变量和全局变量8.8.2 全局变量全局变量n外部变量:外部变量:n函函数数之之外外定定义义的的变
5、变量量称称为为外外部部变变量量。外外部部变变量量可可以以为为本本文文件件中中其其他他函函数数所所共共用用。它它的的有有效效范范围围为为从从定定义义变变量量的的位位置置开开始始到到本本源源文文件件结结束束。所以也称全程变量。所以也称全程变量。第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 6 68.8 局部变量和全局变量局部变量和全局变量8.8.2 全局变量全局变量n外部变量:外部变量:nint p=1,q=5;/*外部变量外部变量*/float f1(int a)/*定义函数定义函数f1*/int b,c;char c1,c2
6、;/*外部变量外部变量*/char f2(int x,int y)/*定义函数定义函数f2*/int i,j;全局变量全局变量p,q的作用范围的作用范围 全局变量全局变量c1,c2的作用范围的作用范围 void main()/*主函数主函数*/int m,n;第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 7 78.8 局部变量和全局变量局部变量和全局变量8.8.2 全局变量全局变量n例例8.15 有一个一维数组,内放有一个一维数组,内放10个学生成绩,写一个函个学生成绩,写一个函数,求出平均分、最高分和最低分。数,求出平均分
7、、最高分和最低分。n#include float Max=0,Min=0;/*全局变量全局变量*/void main()float average(float array,int n);float ave,score10;int i;for(i=0;i10;i+)scanf(“%f”,&scorei);ave=average(score,10);printf(“max=%6.2fnmin=%6.2fn average=%6.2fn“,Max,Min,ave);第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 8 88.8 局部变
8、量和全局变量局部变量和全局变量8.8.2 全局变量全局变量nfloat average(float array,int n)/*定定义义函函数数,形参为数组形参为数组*/int i;float aver,sum=array0;Max=Min=array0;for(i=1;iMax)Max=arrayi;else if(arrayiMin)Min=arrayi;sum=sum+arrayi;aver=sum/n;return(aver);第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 9 98.8 局部变量和全局变量局部变量和全
9、局变量8.8.2 全局变量全局变量第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 10 108.8 局部变量和全局变量局部变量和全局变量8.8.2 全局变量全局变量n建议:建议:一般不使用全局变量,因为:一般不使用全局变量,因为:n全全局局变变量量在在程程序序的的全全部部执执行行过过程程中中都都占占用用存存储储单单元元,而不是仅在需要时才开辟单元。而不是仅在需要时才开辟单元。n使使用用全全局局变变量量过过多多,会会降降低低程程序序的的清清晰晰性性。在在各各个个函函数数执执行行时时都都可可能能改改变变外外部部变变量量的的值值,程
10、程序序容容易易出出错错。因此,要限制使用全局变量。因此,要限制使用全局变量。n降降低低函函数数的的通通用用性性。因因为为函函数数在在执执行行时时要要依依赖赖于于其其所所在在的的外外部部变变量量。如如果果将将一一个个函函数数移移到到另另一一个个文文件件中中,还还要要将将有有关关的的外外部部变变量量及及其其值值一一起起移移过过去去。但但若若该该外外部部变变量量与与其其他他文文件件的的变变量量同同名名时时,就就会会出出现现问问题题,降降低低了了程程序序的的可可靠靠性性和和通通用用性性。一一般般要要求求把把程程序序中中的的函函数数做做成成一一个个封封闭闭体体,除除了了可可以以通通过过“实实参参形形参参
11、”的的渠渠道道与外界发生联系外,没有其他渠道。与外界发生联系外,没有其他渠道。第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 11 118.8 局部变量和全局变量局部变量和全局变量8.8.2 全局变量全局变量n例例8.16 外部变量与局部变量同名。外部变量与局部变量同名。n#include int a=3,b=5;/*a,b为外部变量为外部变量*/a,b作用范围作用范围void main()int a=8;/*a为局部变量为局部变量*/局部变量局部变量a作用范围作用范围 printf(“%d”,max(a,b);全局变量全局变
12、量b的作用范围的作用范围max(int a,int b)/*a,b为局部变量为局部变量*/int c;c=ab?a b;形参形参a、b作用范围作用范围 return(c);第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 12 128.9 变量的存储类别变量的存储类别8.9.1 动态存储方式与静态存储方式动态存储方式与静态存储方式n从变量的作用域(即从空间)角度来分,可分为:从变量的作用域(即从空间)角度来分,可分为:n全局变量全局变量n局部变量局部变量n从变量值存在的时间角度来分,可分为:从变量值存在的时间角度来分,可分为:n
13、静静态态存存储储方方式式:指指在在程程序序运运行行期期间间由由系系统统分分配配固固定定的的存存储储空间的方式。空间的方式。n动动态态存存储储方方式式:则则是是在在程程序序运运行行期期间间根根据据需需要要进进行行动动态态的的分配存储空间的方式。该存储空间可分为:分配存储空间的方式。该存储空间可分为:n 程序区程序区 n 静态存储区静态存储区 n 动态存储区动态存储区第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 13 138.9 变量的存储类别变量的存储类别8.9.1 动态存储方式与静态存储方式动态存储方式与静态存储方式n变量和
14、函数有两个属性:变量和函数有两个属性:n数据类型数据类型n数据的存储类别:数据的存储类别:数据在内存中存储的方式。数据在内存中存储的方式。n存储方式分为两大类:存储方式分为两大类:n静态存储类静态存储类n动态存储类动态存储类n 自动的(自动的(auto)n 静态的(静态的(static)n 寄存器的(寄存器的(register)n 外部的(外部的(extern)n根据变量的存储类别,可以知道变量的作用域和生根据变量的存储类别,可以知道变量的作用域和生存期。存期。第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 14 148.9
15、变量的存储类别变量的存储类别8.9.2 auto变量变量n自动变量自动变量auto:n专专门门声声明明为为static存存储储类类别别的的局局部部变变量量都都是是动动态态分分配配存存储储空空间间,在在调调用用该该函函数数时时系系统统会会给给它它们们分分配配存存储储空空间间,在在函函数数调调用用结结束束时时就就自自动动释释放放这这些些存存储储空空间间。因因此此这这类类局部变量局部变量称为自动变量。称为自动变量。n自动变量用关键字自动变量用关键字auto作存储类别的声明。作存储类别的声明。n函函数数中中的的形形参参和和在在函函数数中中定定义义的的变变量量(包包括括在在复复合合语语句句中定义的变量中
16、定义的变量),都属此类。,都属此类。n例如:例如:int f(int a)/*定义定义f函数,函数,a为形参为形参*/auto int b,c=3;/*定义定义b、c为自动变量为自动变量*/第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 15 158.9 变量的存储类别变量的存储类别8.9.3 用用static声明局部变量声明局部变量n静态变量静态变量static:n当当函函数数中中的的局局部部变变量量的的值值在在函函数数调调用用结结束束后后不不消消失失而而保保留原值时,该变量称为静态局部变量。留原值时,该变量称为静态局部变量
17、。n用关键字用关键字static进行声明。进行声明。第第8 8章函数章函数南昌航空大学信息工程学院南昌航空大学信息工程学院计算机应用技术系刘琳岚计算机应用技术系刘琳岚 16 168.9 变量的存储类别变量的存储类别8.9.3 用用static声明局部变量声明局部变量n例例8.17 考察静态局部变量的值。考察静态局部变量的值。n#include void main()int f(int);int a=2,i;for(i=0;i3;i+)printf(“%d”,f(a);int f(int a)auto int b=0;static c=3;b=b+1;c=c+1;return(a+b+c);第第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 第八
限制150内