C語言中,static關鍵字可以用在全局范圍,也可以用在函數范圍,還可以用在局部范圍!
先上實驗代碼:
[cpp]
#include <stdio.h>
void func(int i){
if((i&0x01)==1){
static int j=1;//局部范圍定義的static變量j
j++;
printf("i=%d,j=%d.\n",i,j);
}
else{
static int j=0;//再定義一個static變量j
j++;
printf("\ti=%d,j=%d.\n",i,j);
}
//printf("j=",j);//error.變量j未被定義
return;
}
int main(){
for(int i=0;i<10;++i)
func(i);
return 0;
}
代碼輸出如下:
從執行結果可以看出,if中定義的static變量j與else中定義的static變量j,互相獨立,而且都會保留“上一次的賦值結果”,同時,在if和else中定義的static變量,僅在if或else的局部范圍可見,局部范圍之外,不可見。