C学习记录-存储方式

  在C语言中,每个变量和函数都有两个属性:数据类型和存储类型,其中与存储类型有关的四个关键字分别为auto,extern,static,register.
变量的存储类型据定了变量的作用域、存储分配方式、生命周期和初始化方式。
动态分配方式:在程序运行的过程中分配和回收存储单元的分配方式
静态分配方式:程序运行之前,系统就为外部变量在静态区分配存储单元,而且在整个程序运行结束后这些被占用的存储单元才被收回的分配方式。

(1)auto
作用域:局限于定义它的块
生命周期:从块内定义之后知道该块结束
存储分配方式:动态分配方式
初始化方式:没有缺省初始值

(2)extern
作用域:从定义之后到该源文件结束的所有函数,通过extern可以进行生命使作用域扩大到整个程序的所有文件
生命周期:永久
存储分配方式:静态分配方式
初始化方式:缺省初始值为0

(3)static
静态局部变量:
作用域:局限于定义它的块
生命周期:永久
存储分配方式:静态分配方式
初始化方式:如果定义静态局部变量有显示初始化,只在第一次进入时进行赋值初始化

动态局部变量:
作用域:从定义之后到该源文件结束的所有函数,只能作用与文件,即使试图用extern也不能改变
生命周期:永久
存储分配方式:静态分配方式
初始化方式:缺省初始值为0

(4)register
关键字只能用来定义局部变量,称为寄存器变量。register建议编译器把该变量存储在计算机的高速硬件寄存器中,除此之外,其余特性和自动变量完全相同。
函数的形参能声明为register,但不能生命为extern和static的。另外寄存器变量不能执行取地址运算。

posted on 2012-12-04 18:37  三木追风  阅读(272)  评论(0编辑  收藏  举报