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;