无涯教程-C++ 存储类

49 阅读2分钟

存储类用于定义C++程序中变量或函数的生存期和可见性。

生存期是指变量保持活动状态的时间段,可见性是指可以访问变量的程序模块。

有五种类型的存储类,可以在C++程序中使用

  1. 自动(Automatic)
  2. 注册(Register)
  3. 静态(Static)
  4. 外部(External)
  5. 可变(Mutable)
存储类 关键字 生命同期 可见度 初始值
Automatic auto 函数块 本地(Local) 未知
Register register 函数块 本地(Local) 未知
Mutable mutable Class类 本地(Local) 未知
External extern 整个程序 全局(Global)
Static static 整个程序 本地(Local)

自动(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变量对所有程序都是可见的。如果两个或多个文件共享相同的变量或函数,则使用它。

extern int counter=0;  

参考链接

www.learnfk.com/c++/cpp-sto…