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修飾的變量僅僅在變量的作用范圍內可見。這一點是它與全局變量的區別。