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