欢迎来到天天文库
浏览记录
ID:39860275
大小:316.50 KB
页数:21页
时间:2019-07-13
《用户标识符的作用域和存储类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言中用户标识符的作用域和存储类别1局部变量、全局变量和存储分类2局部变量及其作用域和生存期3全局变量及其作用域和生存期4函数的存储分类局部变量与全局变量局部变量---内部变量定义:在函数内部或复合语句内部定义的变量说明:main中定义的变量只在main中有效形参属于局部变量局部变量可用存储类型:autoregisterstatic(默认为auto)floatf1(inta){intb,c;…….}charf2(intx,inty){inti,j;……}main(){intm,n;…….}a,b,c有效x,y,i,j有效m,n有效例复合语句中
2、变量#defineN5main(){inti;inta[N]={1,2,3,4,5};for(i=0;i3、,容易出错定义说明次数:只能1次可说明多次位置:所有函数之外函数内或函数外分配内存:分配内存,可初始化不分配内存,不可初始化>>>>>用Extern声明外部变量:extern数据类型变量表;外部变量定义与外部变量说明不同若外部变量与局部变量同名,则外部变量被屏蔽外部变量可用存储类型:缺省或static变量的存储属性概述变量是对程序中数据的存储空间的抽象内存…….main(){inta;a=10;printf(“%d”,a);}编译或函数调用时为其分配内存单元1020002001程序中使用变量名对内存操作变量的属性数据类型:变量所持有的数据的性质4、(操作属性)存储属性存储器类型:寄存器、静态存储区、动态存储区生存期:变量在某一时刻存在-------静态变量与动态变量作用域:变量在某区域内有效-------局部变量与全局变量变量的存储类型auto-----自动型register-----寄存器型static------静态型extern-----外部型变量定义格式:[存储类型]数据类型变量表;变量的存储属性概述变量是对程序中数据的存储空间的抽象如:intsum;autointa,b,c;registerinti;staticfloatx,y;floatmax,min;floataverag5、e(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;imax)max=array[i];elseif(array[i]6、",max,min,ave);}作用域maxmin增加了函数间数据联系的渠道存储方式静态存储:程序运行期间分配固定存储空间动态存储:程序运行期间根据需要动态分配存储空间具体包括:自动的(auto)静态的(static)寄存器的(register)外部的(extern)内存用户区程序区静态存储区动态存储区全局变量、局部静态变量形参变量局部动态变量(autoregister)函数调用现场保护和返回地址等生存期静态变量:从程序开始执行到程序结束动态变量:从包含该变量定义的函数开始执行至函数执行结束变量的存储类别例auto变量的作用域main(){7、intx=1;voidprt(void);{intx=3;prt();printf(“2ndx=%d”,x);}printf(“1stx=%d”,x);}voidprt(void){intx=5;printf(“3thx=%d”,x);}运行结果:3thx=52ndx=31stx=1x=1作用域x=1作用域x=3作用域x=5作用域2局部变量及其作用域和生存期auto变量例使用寄存器变量intfac(intn){registerinti,f=1;for(i=1;i<=n;i++)f=f*i;return(f);}main(){intI8、;for(i=1;i<=5;i++)printf(“%d!=%d”,I,fac(i));}1、只有局部自动变量和形式参数可以作为寄存器变量2、不能
3、,容易出错定义说明次数:只能1次可说明多次位置:所有函数之外函数内或函数外分配内存:分配内存,可初始化不分配内存,不可初始化>>>>>用Extern声明外部变量:extern数据类型变量表;外部变量定义与外部变量说明不同若外部变量与局部变量同名,则外部变量被屏蔽外部变量可用存储类型:缺省或static变量的存储属性概述变量是对程序中数据的存储空间的抽象内存…….main(){inta;a=10;printf(“%d”,a);}编译或函数调用时为其分配内存单元1020002001程序中使用变量名对内存操作变量的属性数据类型:变量所持有的数据的性质
4、(操作属性)存储属性存储器类型:寄存器、静态存储区、动态存储区生存期:变量在某一时刻存在-------静态变量与动态变量作用域:变量在某区域内有效-------局部变量与全局变量变量的存储类型auto-----自动型register-----寄存器型static------静态型extern-----外部型变量定义格式:[存储类型]数据类型变量表;变量的存储属性概述变量是对程序中数据的存储空间的抽象如:intsum;autointa,b,c;registerinti;staticfloatx,y;floatmax,min;floataverag
5、e(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;imax)max=array[i];elseif(array[i]6、",max,min,ave);}作用域maxmin增加了函数间数据联系的渠道存储方式静态存储:程序运行期间分配固定存储空间动态存储:程序运行期间根据需要动态分配存储空间具体包括:自动的(auto)静态的(static)寄存器的(register)外部的(extern)内存用户区程序区静态存储区动态存储区全局变量、局部静态变量形参变量局部动态变量(autoregister)函数调用现场保护和返回地址等生存期静态变量:从程序开始执行到程序结束动态变量:从包含该变量定义的函数开始执行至函数执行结束变量的存储类别例auto变量的作用域main(){7、intx=1;voidprt(void);{intx=3;prt();printf(“2ndx=%d”,x);}printf(“1stx=%d”,x);}voidprt(void){intx=5;printf(“3thx=%d”,x);}运行结果:3thx=52ndx=31stx=1x=1作用域x=1作用域x=3作用域x=5作用域2局部变量及其作用域和生存期auto变量例使用寄存器变量intfac(intn){registerinti,f=1;for(i=1;i<=n;i++)f=f*i;return(f);}main(){intI8、;for(i=1;i<=5;i++)printf(“%d!=%d”,I,fac(i));}1、只有局部自动变量和形式参数可以作为寄存器变量2、不能
6、",max,min,ave);}作用域maxmin增加了函数间数据联系的渠道存储方式静态存储:程序运行期间分配固定存储空间动态存储:程序运行期间根据需要动态分配存储空间具体包括:自动的(auto)静态的(static)寄存器的(register)外部的(extern)内存用户区程序区静态存储区动态存储区全局变量、局部静态变量形参变量局部动态变量(autoregister)函数调用现场保护和返回地址等生存期静态变量:从程序开始执行到程序结束动态变量:从包含该变量定义的函数开始执行至函数执行结束变量的存储类别例auto变量的作用域main(){
7、intx=1;voidprt(void);{intx=3;prt();printf(“2ndx=%d”,x);}printf(“1stx=%d”,x);}voidprt(void){intx=5;printf(“3thx=%d”,x);}运行结果:3thx=52ndx=31stx=1x=1作用域x=1作用域x=3作用域x=5作用域2局部变量及其作用域和生存期auto变量例使用寄存器变量intfac(intn){registerinti,f=1;for(i=1;i<=n;i++)f=f*i;return(f);}main(){intI
8、;for(i=1;i<=5;i++)printf(“%d!=%d”,I,fac(i));}1、只有局部自动变量和形式参数可以作为寄存器变量2、不能
此文档下载收益归作者所有