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