欢迎来到天天文库
浏览记录
ID:50352632
大小:51.50 KB
页数:13页
时间:2020-03-08
《C语言程序设计教程教学课件李淑华 第12讲函数与变量 3 .ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二讲函数与变量7.8变量的定义位置和作用范围7.9动态存储变量与静态存储变量7.8变量的定义位置和作用范围7.8.1局部变量在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。称为“局部变量”。如:C语言中变量的定义有三种基本位置:函数内部、函数参数中及所函数内部。Floatf1(inta)/*函数f1*/{intb,c;┆a、b、c有效}Charf2(intx,inty);/*函数f2*/{intI,j;x、y、i、j有效}Main()/*主函数*/{intm,n;┆m、n有效}说明:(
2、1)主函数main中定义的变量(m,n)也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。(2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。例如,在f1函数中定义了变量b,c,尚若在f2中也定义变量b和c,它们在内存中占不同的单元,互不混淆。(3)形式参数也是局部变量。其他函数不能调用。(4)在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效,这些复合语句也可称为“分程序”或“程序块”。main(){inta,b;┆{intc;c=a+b;┆}┆}c在此范围内有效a、b在此范围
3、内有效7.8.2全局变量全局变量又称为外部变量,是在函数外部定义的变量。其有效范围是从变量定义的位置开始到本源文件结束止。若在同一个源文件中,局部变量与全局变量同名,则在局部变量作用范围内,全局变量被屏蔽,不起作用。在函数体外进行的函数说明也使该函数具有全局的性质。例如:Inta=1,b=5;Floatf1(x);Intx;{intc,d;┆}Charc1,c2;Charf2(x,y)Intx,y;{intI,j;┆}Main(){intm,n;┆}全局变量a、b作用域全局变量c1、c2作用域说明:(1)全局变量的作用:增加函数间数据联系的渠道。对于全局变量,如果在定义
4、时不进行初始化,则系统将自动赋予其初值,对数值型赋0,对于字符型赋空‘ ’。(2)使用全局变量会增加程序的内存开销,因为全局变量在程序的整个执行过程中都有效,即一直占用着内存单元,而不是象局部变量那样,在进入其所在函数时才开辟存储单元,退出函数时便将其释放。使用全局变量,还会降低函数的通用性,而且会降低程序的清晰度。建议不要无限制的使用全局变量。(3)在定义全局变量时,最理想的定义位置是在源文件的开头处,这样,在整个文件中的所有函数均可使用该变量。如果将一全局变量定义在源程序文件的中间,则其前面的函数不能使用该变量。如果在定义点之前的函数想引用该外部变量,则应该在访函
5、数中用关键字extern作“外部变量说明”。表示该变量在函数的外部定义,在函数的内部可以使用它们。外部变量的定义与外部变量的说明并不是一回事。外部变量的定义只能有一次,它的位置在所有函数之外,而同一文件中的外部变量的说明可以有多次,它的位置在函数之内。(4)如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。例7.9编写一函数,求出一浮点数组中各元素的平均值、最大值和最小值。floatmax=0,min=0;floatv(a,n);intn;{intI;floatv,sum=a[0];max=min=a[0];for(i=1;i6、;i++);{if(a[i]>max)max=a[i];elseif(a[i]y?x:y;return(z);}main(){externin7、ta,b;printf(“max=%d”,max(a,b));}inta=10,b=120;例7.11求两个数的最大值。inta=3,b=5;max(a,b)inta,b;{intc;c=a>b?a:b;return(c);}main(){inta=10;printf(“max=%d”,max(a,b));}7.9动态存储变量和静态存储变量7.9.1变量的存储类别1.静态存储方式是指的程序运行期间分配固定的存储空间方式。2.动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间方式。供用户作用的存储空间可分为三部分:(1)程
6、;i++);{if(a[i]>max)max=a[i];elseif(a[i]y?x:y;return(z);}main(){externin
7、ta,b;printf(“max=%d”,max(a,b));}inta=10,b=120;例7.11求两个数的最大值。inta=3,b=5;max(a,b)inta,b;{intc;c=a>b?a:b;return(c);}main(){inta=10;printf(“max=%d”,max(a,b));}7.9动态存储变量和静态存储变量7.9.1变量的存储类别1.静态存储方式是指的程序运行期间分配固定的存储空间方式。2.动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间方式。供用户作用的存储空间可分为三部分:(1)程
此文档下载收益归作者所有