static變量
static變量是靜態存儲變量,定義變量時系統就會為其分配固定的存儲單元,直至整個程序運行結束。之前我們接觸過的全局變量即為static變量,它們存放在靜態存儲區中。使用static關鍵字,可將變量聲明成static變量。例如:
static int a,b;
static float x,y;
static int a[3]={0,1,2}
static變量屬于靜態存儲方式,具有以下特點。
(1)無論是靜態全局變量,還是靜態局部變量,其生存期均為整個C++源程序運行期間。
(2)靜態全局變量在函數外定義,作用域是整個C++源程序,即可在程序任意位置使用它。
(3)靜態局部變量的作用域與auto變量類似,在函數內定義,只能在函數中使用。離開函數后,盡管其值一直存在,但無法被使用。當再次調用函數時,可以繼續使用它。
(4)編譯器會為靜態局部變量賦予0值。
實例:記錄點擊量
建立函數click( ),用于記錄用戶點擊量。函數中定義一個靜態變量sum,用于記錄點擊次數。調用5次click( ),查看此時點擊量是多少。代碼如下:
#include<iostream>
using namespace std;
void click() //定義clidk()函數記錄用戶點擊量
{static int sum=0; //定義靜態局部變量sum,初始點擊次數sum=sum+1; //點擊次數加1cout<<"此時點擊量"<<sum<<endl; //輸出點擊量 } int main(){//調用5次click()函數,模擬5次點擊行為click();click();click();click();click();return 0; }
輸出結果
此時點擊量1
此時點擊量2
此時點擊量3
此時點擊量4
此時點擊量5
程序運行結果如上所示。sum是靜態局部變量,其值自定義起,會一直存在。所以5次調用click( )函數時,變量sum每次都在原來的數值上加1。第5行代碼中,如果去除static關鍵字,則程序運行結果如下所示。此時變量sum為動態存儲形式,每次調用click( )函數后,sum的值都被釋放,再次調用時重新被賦初值0。因此,5次調用click( )函數,輸出的結果都是1。
此時點擊量1
此時點擊量1
此時點擊量1
此時點擊量1
此時點擊量1