存儲類用於定義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;