點擊藍字
關注我們 FOLLOW US
static(計算機高級語言關鍵字)
static三大作用:
修飾局部變量–靜態局部變量修飾全局變量–靜態全局變量修飾函數–靜態函數
01
修飾局部變量–靜態局部變量
把局部變量改變為靜態變量後是改變了它的存儲方式即改變了它的生命周期。但不改變他的作用域。
static局部變量只被初始化一次,下一次依據上一次結果值;
原始碼如下:
1.未經static修飾的局部變量
運行結果:
結論:未經static修飾時每次i被調用的值都為0;生命周期隨著每次函數的調用而更新。
2.static修飾的局部變量
運行結果:
結論:經static修飾後的局部變量,不隨著函數的每次調用而更新,而是沿用上一次的值,被初始化一次。生命周期隨著代碼運行結束而結束。
02
修飾全局變量–靜態全局變量
全局變量之前以static 修飾就構成了靜態的全局變量。
當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變量的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。
static全局變量只初使化一次,防止在其他文件單元中被引用。
1.未經static修飾的全局變量
運行結果:
結論:未經修飾時可跨文件使用,輸出結果為10;
2.static修飾的全局變量
運行結果:
結論:不可跨文件使用全局變量,輸出的是系統給的默認值0而非10。
03
修飾函數–靜態函數
1.未經static修飾的函數
運行結果:
結論:可跨文件調用函數輸出結果3。
2.static修飾的函數
運行結果:
結論:經static修飾後不可跨文件調用函數,並報錯。
04
總結
靜態函數會被自動分配在一個一直使用的存儲區,直到程序結束才從內存消失,避免調用函數時壓棧出棧,速度快很多其他文件可以定義相同名字的函數,不會發生衝突靜態函數不能被其它文件調用,作用於僅限於本文件當我們同時編譯多個文件時,所有未加static前綴的全局變量和函數都具有全局可見性。如果加了static,就會對其它源文件隱藏。
文章作者:LHlucky_2來自CSDN論壇,如有侵權,請聯繫刪除。
作者:CSDN-LHlucky_2
微信號|wanshuIT
新浪微博|萬小樹IT