存儲類用于定義C++程序中變量和/或函數(shù)的生命周期和可見性。
壽命是指變量保持活動的時間段,可見性是指可訪問變量的程序的模塊。
有五種類型的存儲類,可以在C++程序中使用
存儲類 | 關(guān)鍵字 | 生命周期 | 可見性 | 初始值 |
---|---|---|---|---|
自動 | auto | 函數(shù)塊 | 局部 | 垃圾 |
寄存器 | register | 函數(shù)塊 | 局部 | 垃圾 |
可變 | mutable | 類 | 局部 | 垃圾 |
靜態(tài) | static | 整個程序 | 全局 | 零 |
外部 | extern | 整個程序 | 局部 | 零 |
它是所有局部變量的默認存儲類。 auto
關(guān)鍵字自動應用于所有局部變量。
{
auto int y;
float y = 3.45;
}
上面的例子定義了兩個具有相同存儲類的變量,auto
只能在函數(shù)中使用。
寄存器變量在寄存器中分配存儲器而不是RAM
。 其大小與寄存器大小相同。 它比其他變量具有更快的訪問速度。
建議僅使用寄存器變量進行快速訪問,例如:在計數(shù)器中。
注意:我們不能得到寄存器變量的地址。
register int counter=0;
靜態(tài)變量只初始化一次,直到程序結(jié)束。 它保留可在多個函數(shù)之間調(diào)用的值。
靜態(tài)變量由編譯器提供的一個默認值: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();
}
執(zhí)行上面代碼,得到以下結(jié)果 -
i= 1 and j= 1
i= 2 and j= 1
i= 3 and j= 1
extern
變量對所有程序都可見。 如果兩個或多個文件共享相同的變量或函數(shù),則使用它。
extern int counter=0;