c变量存储类别.docx_第1页
c变量存储类别.docx_第2页
c变量存储类别.docx_第3页
全文预览已结束

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一动态存储方式和静态存储方式从空间角度划分,即变量的作用域分为全局变量和局部变量。而从变量的存在时间划分,可以分为静态和动态存储方式。内存中用户使用的存储空间可以分为3部分:(1) 程序区(2) 静态存储区er(3) 动态存储区数据存放在静态和动态存储区,其中全局变量存放在静态存储区,而动态存储区存放以下数据:(1) 函数形参。在调用函数式给形参分配存储空间。(2) 自动变量未加static声明的局部变量(3) 函数调用时的现场保护和返回地址。 所谓动态存储方式,是指函数调用开始时分配动态存储空间,函数结束时释放这些空间,是程序根据需要动态的分配存储空间。而静态存储方式,程序运行期间系统分配固定的存储空间的方式。在c语言中,每一个变量和函数都有两个属性:数据类型和数据的存储类别。存储类别分为两大类:静态存储和动态存储。具体包括四种:auto(自动).静态(static),寄存器(register),外部的(extern)二存储类别1. auto变量函数中的局部变量如果不专门声明static存储类别,都是动态分配存储空间,数据存储在动态存储区中。Auto,变量实际上就是自动存储类别,它属于动态存储方式,实际上由于编译器隐含为“自动存储类别”,.所以Auto可以省略。例如:Int a,b;等价于:Auto int a,b2. static声明局部变量有时候函数调用结束后不消失而保留原值,这时局部变量就是“静态局部变量”,用关键字static进行声明。例如:Void main()Int sum();For(int i=0;i2;i+)Printf(“%dn”,sum();Int sum()Auto int a=1;Static int b=1;a=a+1;b=b+1;return a;/return b;当return 时,结果是 2,2,当return b时,结果是2,3;说明:(1) 静态局部变量属于静态存储类别。(2) 静态局部变量只赋初值一次,也就是说static b=b+1;值运行了一次(3) 静态局部变量只作用于当前函数中,其他函数不能引用3,register变量一般情况下,变量时存在内存中的,如果有一些变量使用频繁,如一个循环循环1000次,每次都要引用某个局部变量,这时,我们就可以声明一个寄存器变量,以加快运算速度。例如:Void main()Int f(int n)Int n=1000;Long rel=f(n);Printf(“%d”,rel);Int f(int n)Register long I,f=1;For(i=1;i=n;i+)F=f*I;Return(f);说明:(1) 只有局部自动变量和形参可以作为寄存器变量(2) 寄存器数目有限,不能定义任意多个寄存器变量(3) 局部静态变量不能定义为寄存器变量这个原因是什么大家应该清楚吧,一个内存,一个寄存器,冲突了。其实,当今编译器已经可以自动将那些使用频繁的变量放在寄存器上了,所以我们不必再次声明了。我也尝试过,声明和不声明时间差不大,具体原因就是因为,当前编译器自动识别了。4.用extern声明外部变量与静态变量子作用在本函数中的作用域相反,使用extern可以扩张变量的作用域。外部变量时在函数外部定义的全局变量,它的作用域是从变量定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。例如:在第一个文件中file.c中:#include Int A=13;Void main ()Ertern A;/说明是外部变量Printf(“%dn”,A);然后创建一个file1.c#include Ectern A;Void main ()Printf(“%dn”,A);输出结果是13说明:(1) 使用全局变量应慎重,因为执行一个文件中的函数式,外部变量值就会改变,从而影响另一个函数的执行结果。(2) 在编译遇到extern时,先在本文件中找到外部变量的定义,如果找到,就在本文中扩展作用域,如果找不到,就在连接时从其他文件中找到外部变量的定义,如果找到了就扩展到本文件的作用域,再找不到就报错。最后,还有一个变量的修饰符,也很常见const。其实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论