欢迎来到天天文库
浏览记录
ID:59351989
大小:425.00 KB
页数:41页
时间:2020-09-20
《数据存储预处理ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章C语言快速入门变量修饰符变量的作用域变量的生存期预处理指令变量修饰符const修饰符(常量修饰符)例如:constinta=20;说明:必须赋初值!static修饰符例如:staticintx=0;说明:静态变量的生存期是整个程序执行期,不会随着函数的调用而动态创建、释放。作用域和存储类作用域存储类说明了变量的使用范围说明了变量的分配存储空间的时间程序中的标识符在哪一个区间内有效,即在哪一个区间内可以使用或引用该标识符。决定何时为变量分配存储空间,何时释放及该存储空间所具有的特征。变量的作用域(Scope)分为局部变量(Loc
2、alVariable)全局变量(GlobalVariable)局部变量的定义:只能在某个范围内使用的变量。包括只能在函数内使用,或只能在某个块内使用。floatf1(inta){intb,c;………}charf2(intx,inty){intb,c;……}a,b,c的有效范围x,y,b,c的有效范围局部变量(LocalVariable)如果局部变量不赋初值,则初值为随机数#includevoidmain(){intm,n;m=10;n=30;if(n<50){intx=20;n=n*x;}printf("%d%d
3、n",m,n);printf("%d",x);}局部变量(LocalVariable)m,n的有效范围x的有效范围全局变量(GlobalVariable)在所有函数之外定义的变量生存期是整个程序,从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存有效范围是:从定义变量的位置开始到本程序结束如果全局变量不赋初值,则初值为0#includeintsum;voidmain(){inti=90,j=100;sum=i+j;printf("%d%d%d",i,j,sum);}#include4、io.h>inty=5;voidf1(){y=8;printf("y=%d",y);}voidmain(){inti=90,j=100,y;y=i+j;f1();printf("%d%d%d",i,j,y);}全局变量与局部变量同名,系统如何处理?在局部变量的使用范围内时,屏蔽全局变量输出结果:Y=890100190inta=3,b=5;max(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=8;printf("max=%d",max(a,b));}例:全局变量与局部变量同名5、运行结果:max=8如果在同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即不起作用。auto自动变量——动态存储区register寄存器变量——CPU中的寄存器extern外部变量——静态存储区static静态变量——静态存储区存储类型形参、自动变量、函数调用的现场等全局变量、静态变量存放数据运算器+控制器寄存器CPURAM分配程序代码区数据区(静态区)(全局变量、静态局部变量)栈区(动态区)(形参、局部变量)堆区(自由申请,指针申请空间)在静态区中存的变量是在源程序编译时分配存储单元的,在程6、序执行完毕才释放。动态区中的变量是在程序执行过程中分配存储单元的,并在程序执行过程中释放。变量的生存期静态存储区中的变量:与程序“共存亡”动态存储区中的变量:与函数(块)“共存亡”寄存器中的变量:同动态存储区程序区静态存储区(数据区)动态存储区存放数据运算器+控制器寄存器CPURAM自动类型变量说明局部变量时,用auto修饰或缺省情况下定义的变量称为自动类型变量:auto类型变量名;或类型变量名;voidmain(){inti=10;autointj;printf(“%d%d”,i,j);}i,j为自动类型变量(局部变量)程序从变量7、的作用域开始,动态地为i,j分配存储空间;到变量的作用域结束,动态地收回变量的存储空间。(动态存储变量)自动类型变量如果不赋初值,其值不确定:10?13静态类型变量用关键词static修饰的变量称为静态类型变量:static类型变量名;staticinty=5;staticchars;voidmain(){staticfloatx;…}y,s为静态类型全局变量x为静态类型局部变量静态类型变量为静态存储变量,在程序开始运行时就为其分配存储空间,直到程序运行完毕收回静态类型变量如果不赋初值,其初值为0:y=5,s=x=014#inclu8、deintt(){inti=100;i+=5;returni;}voidmain(void){printf("i=%d",t());printf("i=%d",t());}静态类型变量例使用静态类型的局部变量
4、io.h>inty=5;voidf1(){y=8;printf("y=%d",y);}voidmain(){inti=90,j=100,y;y=i+j;f1();printf("%d%d%d",i,j,y);}全局变量与局部变量同名,系统如何处理?在局部变量的使用范围内时,屏蔽全局变量输出结果:Y=890100190inta=3,b=5;max(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=8;printf("max=%d",max(a,b));}例:全局变量与局部变量同名
5、运行结果:max=8如果在同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即不起作用。auto自动变量——动态存储区register寄存器变量——CPU中的寄存器extern外部变量——静态存储区static静态变量——静态存储区存储类型形参、自动变量、函数调用的现场等全局变量、静态变量存放数据运算器+控制器寄存器CPURAM分配程序代码区数据区(静态区)(全局变量、静态局部变量)栈区(动态区)(形参、局部变量)堆区(自由申请,指针申请空间)在静态区中存的变量是在源程序编译时分配存储单元的,在程
6、序执行完毕才释放。动态区中的变量是在程序执行过程中分配存储单元的,并在程序执行过程中释放。变量的生存期静态存储区中的变量:与程序“共存亡”动态存储区中的变量:与函数(块)“共存亡”寄存器中的变量:同动态存储区程序区静态存储区(数据区)动态存储区存放数据运算器+控制器寄存器CPURAM自动类型变量说明局部变量时,用auto修饰或缺省情况下定义的变量称为自动类型变量:auto类型变量名;或类型变量名;voidmain(){inti=10;autointj;printf(“%d%d”,i,j);}i,j为自动类型变量(局部变量)程序从变量
7、的作用域开始,动态地为i,j分配存储空间;到变量的作用域结束,动态地收回变量的存储空间。(动态存储变量)自动类型变量如果不赋初值,其值不确定:10?13静态类型变量用关键词static修饰的变量称为静态类型变量:static类型变量名;staticinty=5;staticchars;voidmain(){staticfloatx;…}y,s为静态类型全局变量x为静态类型局部变量静态类型变量为静态存储变量,在程序开始运行时就为其分配存储空间,直到程序运行完毕收回静态类型变量如果不赋初值,其初值为0:y=5,s=x=014#inclu
8、deintt(){inti=100;i+=5;returni;}voidmain(void){printf("i=%d",t());printf("i=%d",t());}静态类型变量例使用静态类型的局部变量
此文档下载收益归作者所有