static關鍵字的涵義有2個。
1,區域性可見。
2,靜態變數。
解釋第一個,如果有在a.c檔案中用static聲明瞭全域性變數x,在b.c中同樣可以用static宣告一個全域性變數x,這裡使用了static的區域性可見性。用途很寬廣,不列舉了。
解釋第二個,在函式中用static宣告區域性變數,此變數在靜態區,必須初始化。auto型變數地址在棧區,函式中用完就被釋放了。而static變數在你下次呼叫函式時依然保持在上次被更改的值。用在例如需要記錄上一次值的地方。
比如有 獲取2次平均值函式
int getAverage(int x){
static int lastx=0;
int ave;
ave=(x+lastx)/2;
lastx=x;/*在下次呼叫函式時,lastx保持x的值*/
return ave;
}
void main(){
int x=2;
int y;
y=getAverage(x);//y=1
x=10;
y=getAverage(x);//y=6
最後送你一隻神獸
static關鍵字的涵義有2個。
1,區域性可見。
2,靜態變數。
解釋第一個,如果有在a.c檔案中用static聲明瞭全域性變數x,在b.c中同樣可以用static宣告一個全域性變數x,這裡使用了static的區域性可見性。用途很寬廣,不列舉了。
解釋第二個,在函式中用static宣告區域性變數,此變數在靜態區,必須初始化。auto型變數地址在棧區,函式中用完就被釋放了。而static變數在你下次呼叫函式時依然保持在上次被更改的值。用在例如需要記錄上一次值的地方。
比如有 獲取2次平均值函式
int getAverage(int x){
static int lastx=0;
int ave;
ave=(x+lastx)/2;
lastx=x;/*在下次呼叫函式時,lastx保持x的值*/
return ave;
}
void main(){
int x=2;
int y;
y=getAverage(x);//y=1
x=10;
y=getAverage(x);//y=6
}
最後送你一隻神獸