JoeChenzzz

导航

c++变量的存储方式

1.名字的作用域

  作用域是从空间的角度来分析的,c++的作用域以花括号分隔,定于于所有{ }以外的名字具有全局作用域,定义于{ }以内的名字具有块作用域

2.变量的生命周期

  生命周期是从变量存在的时间角度来分析的,生命周期可以分为静态存储期和动态存储期,这是由变量的静态存储方式和动态存储方式决定的

3.静态存储方式

  静态存储方式通常是指在变量在定义时就分配固定内存并一直保持不变, 直至整个程序结束,变量的内存在程序编译阶段就已经分配好

4.动态存储方式

  动态存储是指在程序执行过程中,使用变量时才分配内存, 使用完毕时立即释放

5.变量的分类

  c++的变量可分为静态局部变量全局(外部)变量自动变量寄存器变量

5.1静态局部变量(静态存储方式)

1)在函数体内用static声明的变量

2)定义时没有初始值将默认初始化为0

3)静态局部变量虽然生存周期为整个程序,但是其作用域仅限于定义它的函数内,也就是说在其他函数中不能使用它

4)静态局部变量初始化的时机:c语言:编译阶段分配好内存之后,就会进行初始化;c++:static局部变量在执行相关代码时才会进行初始化

5.2全局(外部)变量(静态存储方式)

1)在函数外部声明的变量称为全局变量,分为静态外部变量、非静态外部变量

2)静态全局变量:在函数体外关键字static声明的变量,只允许被本源文件(.cpp)中的函数使用(static的隐藏作用)

3)非静态全局变量:在函数体外没有用关键字static声明的变量,允许被其它源文件中的函数使用,当其他源文件中的函数使用非静态外部变量时,需要在使用用前用关键字extern进行说明

5.3自动变量(动态存储方式)

1)自动变量意为有自动的生命周期

2)在函数体内或者在复合语句内,用关键字auto声明的变量,关键字auto可以省略,我们常说的局部变量就是自动变量

3)定义时不初始化,其值是不确定的

5.4寄存器变量(动态存储方式)

1)一般情况下,变量的值都是存储在内存中的,为提高执行效率,c/c++允许将局部变量存放到寄存器中,这种变量就称为寄存器变量

2)用关键字register声明

6.辨析静态变量、全局(外部)变量、静态局部变量

1)静态变量包含静态全局变量和静态局部变量

2)全局变量包含静态全局变量、非静态全局变量

posted on 2019-03-22 08:33  JoeChenzzz  阅读(710)  评论(0编辑  收藏  举报