1、static修飾的變數會一直保存在記憶體中,直到程式結束才會被銷毀,不管你是在代碼的那個位置定義的這個變數。因此你定義的static變數只會初始化一次,之後你獲取到的static修飾的變數的值均是上次賦的值。 代碼: 當pla結束第一次調用的時候,i還存在再記憶體中,值為2;當這個函數第二次被調用, ...
1、static修飾的變數會一直保存在記憶體中,直到程式結束才會被銷毀,不管你是在代碼的那個位置定義的這個變數。因此你定義的static變數只會初始化一次,之後你獲取到的static修飾的變數的值均是上次賦的值。
代碼:
1 void play() 2 { 3 static int i = 0; //這裡只會執行一次 4 ... 5 i = 2; 6 ... 7 }
當pla結束第一次調用的時候,i還存在再記憶體中,值為2;當這個函數第二次被調用,進入這個函數的時候,i的值仍然為2;也就是說i一直存在於記憶體中。
2、避免團隊開發多人在多個文件使用了相同的全局變數名而導致衝突的問題
* 在各自文件中,在相同的全局變數前加上static修飾符。這樣系統就會為他們分配不同的記憶體。
* 用static修飾的變數僅僅在變數的作用範圍內可見。這一點是它與全局變數的區別。