1、存儲位置不同
靜態變量:存儲在全局數據區(靜態數據區)。
非靜態變量叫動態變量:存儲在內存出棧數據區。
2、生命期不同
動態變量:根據妳定義的位置確定,比如妳在壹個函數中定義的,那麽超出該函數範圍變量將失效。
靜態變量:程序結束時才釋放。
3、作用域不同
動態變量:同樣的要根據妳定義的位置才能確定,和第二點的壹樣。
靜態變量:當前文件中有效。
擴展資料;
靜態變量的作用;
1、對於靜態全局變量,源文件靜態聲明的文件級變量和函數的作用域僅限於文件(僅在文件中可見),即內部連接,因此可以用來限制變量的作用域。
2、對於靜態局部變量,雖然函數內靜態聲明的變量範圍與自動局部變量的範圍相同(即範圍僅在函數內),但存儲空間是通過靜態分配而不是默認的自動分配獲得的。
所以存儲空間在不同的區域是不同的(壹般來說,靜態分配時在編譯時在程序數據段中劃分存儲空間,壹次性分配在整個過程中是有效的。而在自動分配時,存儲空間是在調用堆棧上分配的,只分配和釋放在調用期間),兩個調用之間的變量值總是壹致的。必須註意,靜態局部變量只能初始化壹次,這是由編譯器保證的。
3、對於靜態成員變量,在C++中,類定義中靜態聲明的成員變量屬於類變量,即它們在所有類實例中***享,相反是過程變量。
參考資料來源;百度百科——靜態變量
百度百科——動態變量