C++存儲類

存儲類用於定義C++程序中變量和/或函數的生命週期和可見性。

壽命是指變量保持活動的時間段,可見性是指可訪問變量的程序的模塊。

有五種類型的存儲類,可以在C++程序中使用

  • 自動(Automatic)
  • 寄存器(Register)
  • 靜態(Static)
  • 外部(External)
  • 可變(Mutable)

存儲類

關鍵字

生命週期

可見性

初始值

自動

auto

函數塊

局部

垃圾

寄存器

register

函數塊

局部

垃圾

可變

mutable

局部

垃圾

靜態

static

整個程序

全局

外部

extern

整個程序

局部

自動存儲類

它是所有局部變量的默認存儲類。 auto關鍵字自動應用於所有局部變量。

{   
    auto int y;  
    float y = 3.45;  
}

上面的例子定義了兩個具有相同存儲類的變量,auto只能在函數中使用。

註冊存儲類

寄存器變量在寄存器中分配存儲器而不是RAM。 其大小與寄存器大小相同。 它比其他變量具有更快的訪問速度。
建議僅使用寄存器變量進行快速訪問,例如:在計數器中。

注意:我們不能得到寄存器變量的地址。

register int counter=0;

靜態存儲類

靜態變量只初始化一次,直到程序結束。 它保留可在多個函數之間調用的值。
靜態變量由編譯器提供的一個默認值: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變量對所有程序都可見。 如果兩個或多個文件共享相同的變量或函數,則使用它。

extern int counter=0;