资源描述:
《变量的作用域和生存期》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、7.8变量的存储属性概述变量是对程序中数据的存储空间的抽象内存…….main(){inta;a=10;printf(“%d”,a);}编译或函数调用时为其分配内存单元1020002001程序中使用变量名对内存操作变量的属性数据类型:变量所持有的数据的性质(操作属性)存储属性存储器类型:寄存器、静态存储区、动态存储区生存期:变量在某一时刻存在-------静态变量与动态变量作用域:变量在某区域内有效-------局部变量与全局变量变量的存储类型auto-----自动型register-----寄存器型static------静态型extern-----外部型变量定义格
2、式:[存储类型]数据类型变量表;7.8变量的存储属性概述变量是对程序中数据的存储空间的抽象如:intsum;autointa,b,c;registerinti;staticfloatx,y;局部变量与全局变量局部变量---内部变量定义:在函数内定义,只在本函数内有效说明:main中定义的变量只在main中有效不同函数中同名变量,占不同内存单元形参属于局部变量可定义在复合语句中有效的变量局部变量可用存储类型:autoregisterstatic(默认为auto)floatf1(inta){intb,c;…….}charf2(intx,inty){inti,j;……}m
3、ain(){intm,n;…….}a,b,c有效x,y,i,j有效m,n有效例不同函数中同名变量main(){inta,b;a=3;b=4;printf("main:a=%d,b=%d",a,b);sub();printf("main:a=%d,b=%d",a,b);}sub(){inta,b;a=6;b=7;printf("sub:a=%d,b=%d",a,b);}例复合语句中变量#defineN5main(){inti;inta[N]={1,2,3,4,5};for(i=0;i4、i-1];a[N-i-1]=temp;}for(i=0;i5、intf("main:a=%d,b=%d",a,b);}sub(){inta,b;a=6;b=7;printf("sub:a=%d,b=%d",a,b);}运行结果:main:a=3,b=4sub:a=6,b=7main:a=3,b=4全局变量---外部变量定义:在函数外定义,可为本文件所有函数共用有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件应尽量少使用全局变量,因为:全局变量在程序全部执行过程中占用存储单元降低了函数的通用性、可靠性,可移植性降低程序清晰性,容易出错定义说明次数:只能1次可说明多次位置:所有函数之外函数内或
6、函数外分配内存:分配内存,可初始化不分配内存,不可初始化>>>>>外部变量说明:extern数据类型变量表;外部变量定义与外部变量说明不同若外部变量与局部变量同名,则外部变量被屏蔽外部变量可用存储类型:缺省或static>floatmax,min;floataverage(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;imax)max=array[i];elseif(array[i]7、i];}return(sum/n);}main(){inti;floatave,score[10];/*Input*/ave=average(score,10);printf("max=%6.2fmin=%6.2faverage=%6.2f",max,min,ave);}作用域maxminintp=1,q=5;floatf1(inta){intb,c;…….}intf3(){…..}charc1,c2;charf2(intx,inty){inti,j;……}main(){intm,n;…….}c1,c2的作用范围p,q的作用范围externcharc