C++教程-C++存储类
C++ 存储类
存储类用于定义变量和/或函数在 C++ 程序中的生存期和可见性。
生存期是指变量保持活动状态的时间段,可见性是指变量在程序中可以访问的模块。
在 C++ 程序中,有五种类型的存储类可以使用:
- 自动(Automatic)
- 寄存器(Register)
- 静态(Static)
- 外部(External)
- 可变的(Mutable)
存储类 | 关键字 | 生存期 | 可见性 | 初始值 |
---|---|---|---|---|
自动(Automatic) | auto 函数块 | (Function Block) 局部 | (Local) 垃圾值 | (Garbage) 寄存器 |
垃圾值(Register) | register 函数块 | (Function Block) 局部 | (Local) 垃圾值 | (Garbage) 可变的 |
(Mutable) | mutable 类 | (Class) 局部 | (Local) 垃圾值 | (Garbage) 外部 |
(External) | extern 整个程序 | (Whole Program) 全局 | (Global) | 0 |
静态(Static) | static 整个程序 | (Whole Program) 局部 | (Local) | 0 |
自动(Automatic)存储类
它是所有局部变量的默认存储类。auto 关键字会自动应用于所有局部变量。
{
auto int y;
float y = 3.45;
}
上面的示例定义了两个具有相同存储类的变量,auto 只能在函数内部使用。
寄存器(Register)存储类
寄存器变量在寄存器中分配内存,而不是在 RAM 中。
它的大小与寄存器大小相同。它比其他变量具有更快的访问速度。建议仅将寄存器变量用于快速访问,例如计数器。
注意:我们无法获取寄存器变量的地址。
register int counter=0;
静态(Static)存储类
静态变量仅初始化一次,并在程序的结束之前存在。它在多次函数调用之间保留其值。
静态变量的默认值为 0,由编译器提供。
\#include <iostream>
using namespace std;
void func() {
static int i=0; // 静态变量
int j=0; // 局部变量
i++;
j++;
cout<<"i=" << i<<" and j=" <<j<<endl;
}
int main()
{
func();
func();
func();
}
输出:
i= 1 and j= 1 i= 2 and j= 1 i= 3 and j= 1
外部(External)存储类
外部变量对所有程序可见。如果两个或多个文件共享相同的变量或函数,则使用外部变量。
extern int counter=0;