存储类型与类型界限符.ppt

存储类型与类型界限符.ppt

ID:59824556

大小:311.81 KB

页数:29页

时间:2020-11-24

存储类型与类型界限符.ppt_第1页
存储类型与类型界限符.ppt_第2页
存储类型与类型界限符.ppt_第3页
存储类型与类型界限符.ppt_第4页
存储类型与类型界限符.ppt_第5页
资源描述:

《存储类型与类型界限符.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第12章存储类型与类型限定符学习目标(1)理解存储类型的基本概念及类别。(2)掌握extern、register、static和const等类型限定符的使用方法。在C语言中,每一个变量和函数都有两个属性:类型(type)和存储类型(storageclass),其中类型决定了为变量和函数分配多大的存储单元,而存储类型确定了所声明对象的生存期。生存期也称为存储期间,它是指对象保持所分配的存储单元的时间。存储类型有4种,分别是自动、外部、寄存器和静态,对应的关键字分别是:autoexternregisterstatic前面所涉及到变量,声明时都没

2、有明显地指明存储类型,这种缺省的存储类型是自动的。如下列明显地指定存储类型的声明autointa,b;autofloatx,y;{inta=12,b=23;floatx=5.6,y=16.4;……}进入块时,为变量a、b、x和y分配存储单元a12b23x5.6y16.4退出块时,释放分配给变量a、b、x和y的存储单元abxy等价于下列缺省存储类型的声明inta,b;floatx,y;12.2存储类型extern这种变量只要在函数和块之外声明后,它能在函数或块的内外都保持分配给它的存储单元,从而保持其值。#includefl

3、oatpi=3.14159;inta=1,b=2,c=3;intf(void);intmain(void){printf("%3d",f());printf("%3d%3d%3d",a,b,c);return0;}intf(void){intb,c;a=b=c=4;return(a+b+c);}外部变量定义时不需要使用extern在定义声明外部变量时,无需使用存储类型符extern,且一般包括有初始化。但是并不是意味着任何时候都可以省略存储类型符extern。在定义这种外部变量的文件之外的其他文件中使用它时,需要用存储类型符exte

4、rn声明。外部变量也称为是全局变量。作用域是从定义的地方开始到程序结束。注意:floatarea_circle(floatr,float*S){externfloatpi;if(r>0){*S=r*r*pi;return1;}elsereturn0;}例,在另一个文件中函数area_circle()需要访问前述文件中定义的外部变量pi,则访问前需要用存储类型符extern声明pi。所有的函数的存储类型都具有外部存储类型,在函数体中和函数原型中都可以使用关键字extern。例如,externfloatarea_circle(float,flo

5、at*);……externfloatarea_circle(floatr,float*S){externfloatpi;if(r>0){*S=r*r*pi;return1;}elsereturn0;}12.3存储类型register变量与存储单元关联,一个变量具有一个特定大小的存储单元,给变量赋值就是将该值存储到相应的存储单元中,给变量分配存储单元是由编译程序来完成的,分配给变量的存储单元一般是来自内存。但是,我们可以通过将int变量声明为存储类型register,而把寄存器(CPU中的存储单元)分配给它,这样有关该变量的运算速度将得到提高

6、。例:{registerinti;for(i=0;i

7、进入块内时使用它。1.变量声明为存储类型static#includevoidf(void);intmain(void){f();f();f();return0;}voidf(void){intcnt=0;++cnt;printf("cnt=%d",cnt);}运行结果:cnt=0cnt=0cnt=0修改为:staticintcnt=0;运行结果:cnt=1cnt=2cnt=3这种情形,不管程序如何执行,变量也保持它的原有值,但是,不允许其他文件对它进行访问,即一个文件中static类型的外部变量不能被其他文件“操作”,

8、即它对外而言是不可见的,这种变量也称为私有变量。(2)声明外部变量为static的情形。程序文件file1.c:程序文件file2.c:#includeexte

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

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

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