背景知识:
区分两个概念: 变量的 作用范围 和 生命周期
对C语言程序来说,内存分为两块区域: 程序区和数据区,我们所有的变量都集中在数据区
操作系统 |
程序区 (如c程序代码) |
数据区 | 静态存储区 | 全局变量 |
静态局部变量 | ||
动态存储区 (如自动变量) |
常用变量:
自动变量: 如局部变量 作用域为{ } 生命周期为 { }
全局变量: 作用域 从定义开始到程序所在文件的结束 生命周期 程序结束
静态局部变量: 作用域 { } 生命周期 程序结束
特殊变量:
寄存器变量: 数据存储在计算机寄存器单元上, 使用方式与自动变量完全相同
外部变量: 只起声明作用
临时变量: 编译器因为某种需要自动生成的不能访问的变量 如以下情况下
1. 创建常量的引用,将产生一个临时变量.如:
const int i=5;
const int &ri=i;
2. 当初始化引用的变量类型与声明的引用类型不一致时,也会产生临时变量:
int i=5;
double &rd=i;
3. 函数以值的形式返回时,也会产生临时变量(对象)etc.
动态对象:
应该注意的是以上都是 静态分配对象---即编译器在处理程序源代码时分配
实际上我们还可以 动态分配对象---即程序执行时调用运行时刻库函数来分配 即利用 new 和 delete 表达式