解析C++中的5个存储类的作用

2020-01-06 15:09:11王冬梅
易采站长站为您分析C++中的5个存储类的作用,存储类是管理对象的生存期、链接和内存位置的类型说明符,需要的朋友可以参考下  

存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类:

  • auto
  • register
  • static
  • extern
  • mutable

    存储类说明符可以分为两个存储类:自动存储类(autmatic storage class)和静态存储类(static storage class)。关键字auto和regtster用来声明自动存储类变量。这种变量在进入声明的块时生成,在块活动期间存在,在退出这个块时删除。

    只有变量能作为自动存储类。函数的局部变量和参数通常是自动存储类。存储类说明符auto显式声明变量为自动存储类。例如,下列声明表示float变量x和y是自动存储类的局部变量,即只在定义该变量的函数体中存在:

    
    auto float x,y;
    

    局部变量默认为自动存储类,因此关键字auto很少使用。
    register声明通常是不需要的。如今的优化编译器通常能识别经常使用的变量,并决定将其教在寄存器中而不需要程序员进行register声明。
    关键字extern和static是用来声明静态存储类变量和函数的标识符。这种变量从程序开始执行时就存在。对于变量,程序开始执行时就分配和初始化存储空间;对于函数,从程序开始执行时就存在函数名。但是,尽管变量和函数名从程序开始执行时起就存在,但这并不是说这些标识符可以在整个程序中使用。 
    静态存储类有两种标识符:外部标识符(如全局变量和函数名)与存储类说明符Static中声明的局部变量。全局变量和函数名默认为存储类说明符extern。全局变量生成时将变量声明放在任何函数定义之外.在整个程序执行期间保存该全局变量的值。全局变量和函数可以由文件中已声明或定义的任何函数引用。

    下面我们具体来看一下:
    auto 存储类

    auto 存储类是所有局部变量默认的存储类。

    
    {
      int mount;
      auto int month;
    }