分类: C/C++
2009-10-21 18:37:20
在过程内声明,是局部变量,只能在过程中起作用。
在过程外声明,是全局变量,在整个程序中使用。
生存期:存活期。
局部变量函数或过程结束后,生命周期也就结束了。
全局变量在整个角本运行结束才结束
局部变量是用于临时存取数据的
作用域:变量名有效的范围
存在期:变量在程序中存在的时期.
存储方式:auto, register, extern, static
存储空间类型: 栈(stack):自动分配和清除的变量.如:局部变量和函数参数等
堆(heap):由malloc等函数分配的空间.
(在c++里这叫自由存储区,而把new得来的空间叫做堆)
全局/静态存储区:存储全局变量和静态变量.
常量存储区:存储常量(常量字符串,magic number等),不允许修改.
|
类型 |
补充 |
作用域 |
存在期 |
初始化 |
外部定义(函数外面) |
全局变量(外部变量) |
为了后定义先使用:可用extern外部变量说明. |
全局 |
全程 |
一次初始化 |
静态外部变量 |
|
文件 |
全程 | ||
外部数组 |
|
全局 |
全程 | ||
静态函数 |
|
文件 |
n/a |
n/a | |
普通函数 |
|
全局 |
n/a |
n/a | |
内部定义(函数里面) |
静态局部数组 |
|
局部 |
全程 |
一次初始化 |
静态局部变量 |
在函数外只能赋一次值 |
局部 |
全程 |
一次初始化 | |
普通局部变量(自动变量) |
|
局部 |
局部 |
|
凡是存在期为全程的对象(变量,数组等)都具有”一次初始化”的特性,即只在程序开始前初始化一次(之后再遇到初始化语句就会跳过,当然其他赋值语句不会跳过).
它们都分配在全局/静态存储区.
它们初始化时的右值可以是一个初始化表达式(由文字量/符号常量/基本运算符(赋值和自增减运算符例外)组成).若没有初始化语句,会自动置零(包括数组).