首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

C++基础解析二十五

2008-12-07 
变量生存期,作用域,存储位置总结

    作用域:变量名有效的范围
  存在期:变量在程序中存在的时期.
  存储方式:auto, register, extern, static
  存储空间类型: 栈(stack):自动分配和清除的变量.如:局部变量和函数参数等
  堆(heap):由malloc等函数分配的空间.
  (在c++里这叫自由存储区,而把new得来的空间叫做堆)
  全局/静态存储区:存储全局变量和静态变量.
  常量存储区:存储常量(常量字符串,magic number等),不允许修改.

类型
补充
作用域
存在期
初始化

外部定义(函数外面)
全局变量(外部变量)
为了后定义先使用:可用extern外部变量说明.
全局
全程
一次初始化

静态外部变量

文件
全程

外部数组

全局
全程

静态函数

文件
n/a
n/a

普通函数

全局
n/a
n/a

内部定义(函数里面)
静态局部数组

局部
全程
一次初始化

静态局部变量
在函数外只能赋一次值
局部
全程
一次初始化

普通局部变量(自动变量)

局部
局部


  凡是存在期为全程的对象(变量,数组等)都具有”一次初始化”的特性,即只在程序开始前初始化一次(之后再遇到初始化语句就会跳过,当然其他赋值语句不会跳过).
  它们都分配在全局/静态存储区.
  它们初始化时的右值可以是一个初始化表达式(由文字量/符号常量/基本运算符(赋值和自增减运算符例外)组成).若没有初始化语句,会自动置零(包括数组).
  ----by Bryan.Wong
  整理的这些东西说不定还是有疏漏,谁发现了记得告诉我一声.顺便说说一个我在c89和c99标准中没有找到说法的问题(不太会查ansi c标准,汗):c89允许定义static的结构体吗?c99呢?



3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行