2. 存储类型

来源:互联网 发布:淘宝买的模板在哪里 编辑:程序博客网 时间:2024/06/18 11:02

2. 存储类型

存储类型有4个 auto、static、extern和register,这4个都可以放在变量前面,放在函数前面的只有两个extern和static
2.1 变量的特性
每个变量都有3方面特性:
存储期限,变量的存储期限决定了变量在内存中存在的时间,自动存储期限的变量在所属块程序被执行时分配内存,在离开是释放内存,这一般是代码块或函数内部的变量及函数的参数。静态存储期限的变量在整个程序运行期间都存在。
作用域,变量的作用域分为块作用域和文件作用域,定义在函数内部的变量具有块作用域,定义在函数外部的变量具有文件作用域。
链接,变量的链接属性决定了变量的共享范围。外部链接可以在几个文件中共享,内部链接只在当前文件中共享,无链接变量在程序块中共享。
变量的默认存储期限、作用域和链接依赖变量定义的位置,在块内部声明的变量具有自动存储期限、块作用域、无链接;在程序最外层声明的变量具有静态存储期、外部链接和文件作用域。
如果默认声明不能满足程序需求可以指定存储类型来改变其特性,例如可以指定为static或extern,这两个最常用。
2.1.1 auto存储类型
块内的变量都是auto存储类型,一般不明确指定。
2.1.2 static存储类型
static 可以改变变量的链接属性和存储期限,块外的static变量具有内部链接属性,其它文件不能访问,起到了隐藏的作用;块内部的static变量具有静态存储期限,初始化一次,整个程序期间都将存在。
2.1.3 extern 存储类型
extern变量使得几个文件可以共享此变量,extern变量只是声明而没有定义(没有分配内存空间,extern变量同事初始化除外)。
2.1.4 register存储类型
register变量使得变量保存在CPU的寄存器中。
2.2 函数的存储类型

函数的存储类型只有static和extern,extern具有外部链接属性,其它文件可以访问,static具有内部链接属性其它文件不能访问。

该博客教程视频地址:http://geek99.com/node/1034

原文出处:http://geek99.com/node/891#

0 0