第8章 变量的作用域和存储类别.ppt

第8章 变量的作用域和存储类别.ppt

ID:61960743

大小:46.50 KB

页数:13页

时间:2020-02-25

第8章 变量的作用域和存储类别.ppt_第1页
第8章 变量的作用域和存储类别.ppt_第2页
第8章 变量的作用域和存储类别.ppt_第3页
第8章 变量的作用域和存储类别.ppt_第4页
第8章 变量的作用域和存储类别.ppt_第5页
资源描述:

《第8章 变量的作用域和存储类别.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第8章变量的作用域和存储类别考试类型:笔试+上机所占分值:笔试8分8.1变量的作用域指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(LocalVariable)全局变量(GlobalVariable)局部变量局部变量在语句块内定义的变量形参也是局部变量定义时不会自动初始化,除非程序员指定初值进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效并列语句块各自定义的同名变量互不干扰P127例8-1分析以下程序的输出结果。#includeintfunc();main(){

2、inta=1;func();printf("a=%d",a);}intfunc(){inta;a=2;printf("a=%d",a);}a=2a=1全局变量全局变量在所有函数之外定义的变量在程序中定义它的位置以后都有效自动初始化为0从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存在定义点之前或在其他文件中引用,应该进行如下声明:extern类型名变量名;使函数之间的数据交换更容易,也更高效但是并不推荐使用因为谁都可以改写全局变量,所以很难确定是谁改写了它尽量少用全局变量。不得不用时,要严格控

3、制对它的改写P128例8-2分析以下程序的输出结果。#includeinta=3,b=5;/*a、b为全局变量*/max(inta,intb)/*a、b为局部变量*/{intc;c=a>b?a:b;returnc;}main(){inta=8;/*a为局部变量*/printf("%d",max(a,b));}此a为局部变量8,全局变量被屏蔽。8.2变量的存储类别指数据在内存中存储的方式,即编译器为变量分配内存的方式,它决定变量的生存期动态存储根据需要临时分配存储空间,离开即释放静态存储在程序运行期间

4、分配固定的存储空间不释放程序区静态存储区动态存储区形参、自动变量、函数调用的现场等全局变量、静态变量自动变量(auto)“自动”体现在进入语句块时自动申请内存,退出时自动释放内存动态局部变量标准定义格式auto类型名变量名;缺省的存储类型不初始化时,值是不确定的静态变量(static)一个函数的内部变量在函数退出后失效。再次进入函数,变量值重新初始化把此变量定义为static,则变量的值可以保存到下次进入函数staticinti;静态变量和全局变量都是静态存储类型自动初始化为0从静态存储区分配,生存期为整个程序运行期间但

5、作用域不同P130例8-4静态变量的应用#includefunc(inta){intb=0;staticc=3;a=c++,b++;returna;}main(){inta=2,i,k;for(i=0;i<2;i++)k=func(a++);printf("%d",k);}4寄存器变量(register)寄存器CPU的内部容量很有限但速度极快的存储器使用频率比较高的变量声明为register,可以使程序更小、执行速度更快register类型名变量名;registerinti;现代编译器有能力自动把普

6、通变量优化为寄存器变量,并且可以忽略用户的指定,所以一般无需特别声明变量为register本章结束

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。