C语言程序设计课件 :函数.ppt
6.6.1全局变量和局部变量全局变量: 即作用域是整个程序的变量,称其为全程变量或全局变量。局部变量:有些变量只能在稳定的函数(复合语句)中,作用域是在特定函数(复合语句)内,称其为局部变量。全局变量:一个源程序文件可以包含一个或若干个函数。在函数之外定义的变量称为全局变量或全程变量(又称外部变量)。其可以为本文件中其它函数所共用。有效范围为:从定义变量的位置开始到本源文件结束。例如:inta,b;floatc,d;voidmain()charch1,ch2;charp2(y){intv,w;floatp1(x)inty:…intx;{intp,q;}{inti;……}}其中a、b、ch1、ch2、c、d都是全局变量,由于定义它们的位置不同,其作用范围也不一样。在main函数和p2函数中,可以a、b、ch1、ch2、c、d作为全局变量使用。而在p1函数中,只能将a、b、ch1、ch2作为全局变量使用。局部变量:在函数内部定义的变量只在本函数范围内才有效,即只在函数内部才能使用,在函数之外是不能使用这些变量的。这种变量称为“局部变量”。floatp1(x)其中,x、i、y、q、v、w都是局部变量,intx;它们都只在各自的函数内部范围才有效{inti;。特别地,若一个变量是在某函数中的…复合语句中定义,那么,它只在该复合}局部变量x、i的作用范围语句中才有效,在该复合语句之外不能floatp2(y)引用该变量。例如:inty;voidmain(){charq;{inti,j;……}局部变量y、q的作用范围{intk;voidmain()k=i+j;{intv,w;}k在此范围内有效……}局部变量v、w的作用范围}i、j在此范围内有效例如:inta,b;charch1,ch2;floatp1(x)intx;{inti;…}voidmain(){intv,w;…}这些为全局变量!“i”为局部变量!关于全局变量与局部变量的说明:(1)同一个源文件中,若全局变量与局部变量同名,则在局部变量的作用范围内,全局变量不起作用。(2)利用全局变量也可以实现函数间的数据传递。由于同一文件中所有的函数都能引用全局变量,因此,在一个函数中改变了全局变量的值,会影响到其他使用这个全局变量的函数,这相当于可以利用全局变量作为函数之间联系的渠道(3)如果在定义全局变量之前引用该全局变量,则须用关键字extern先说明,否则不能引用。(4)局部变量只在定义它的函数中有效,并不会因为它在文件的第一个函数中或在主函数中定义过而在整个文件中有效。(5)不同的函数中可以用相同的变量名来表示局部变量,但各自有自己的含义,互不干扰,因为它们在内存中有不同的单元。6.6.2变量的存储属性及作用域基本概念:C语言的存储属性有四类:自动型、外部型、静态型和寄存器型,其相应的存储类别说明符分别是:auto自动型extern外部型static静态型register寄存器型自动