靜態變量與臨時變量的區別?
一、形式不同:
靜態變量是在定義的時候,有static 修飾的變量,形式為static TYPE var_name = init_value;
動態變量,形式為TYPE var_name = init_value;即沒有static 修飾,其中的=init_value均可省略。
二、作用不同:
動態全局變量:作用域為整個項目,即最終編譯成可執行文件的所有文件中均可以使用動態全局變量,生命周期為從程序運行到程序退出,即貫穿整個運行時間。
靜態全局變量:作用域為當前文件,從定義/聲明位置到文件結尾,生命周期為從程序運行到程序退出,即貫穿整個運行時間。
常量使用
靜態變量也可以用于存儲常數。具體來說,靜態變量(全局變量及匯編語言里定義的符號亦同)可用const,constant或final(根據語言決定)等關鍵字標識,這時其值就會在編譯時設定,并且無法在運行時改變。
編譯器通常將靜態常量與文本一起置于目標文件的文本區域,而非常量初始化數據則置于數據區;而如若有需要,有些編譯器還可選擇為其開辟專用區;為防止常數變量被錯誤的指針寫入覆蓋,亦可在這塊區域啟用內存保護機制。