標籤:
在C中定義一個變數將意味什嗎?
1、規定變數的取值範圍。
2、規定變數的操作
3、規定變數的範圍(或者生命週期、或者存取控制)
4、規定了變數的儲存方式(或者儲存格式)。
在純C中Static有兩個作用(不考慮C++以及二則混合使用):
1、Static修飾局部變數:該變數能在所定義的函數中共用(參考例一)。
2、Static修飾全域變數或函數:該變數或函數只在所定義的檔案中可見(參考例一)。
例一:
void foo(void)
{ static int i = 10; int j = 10; i += 1; j += 1; printf("i = [%d], j = [%d]\n",i,j);}int main(int argc, char *argv[]) { int i ; for (i = 0; i < 10; i++) foo(); return 0;}
output:
i = [11], j = [11]
i = [12], j = [11]
i = [13], j = [11]
i = [14], j = [11]
i = [15], j = [11]
i = [16], j = [11]
i = [17], j = [11]
i = [18], j = [11]
i = [19], j = [11]
i = [20], j = [11]
例二:
foo.cvoid foo1(void){ static int i = 10; int j = 10; i += 1; j += 1; printf("i = [%d], j = [%d]\n",i,j);}static void foo2(void){ static int i = 10; int j = 10; i += 1; j += 1; printf("i = [%d], j = [%d]\n",i,j);}
main.c
int main(int argc, char *argv[]) { int i,j; for (i = 0; i < 10; i++) foo1(); for(j = 0; j < 10; j++) foo2(); // error: undefined reference to `foo2‘ // as main() can not acces the static mothed foo2() in foo.c file return 0;}
C中Static的作用