static全局變量和普通全局變量的區別
時間:2024-05-11 來源:華清遠見
在開始探討static全局變量和普通全局變量的區別之前,我們先來熟悉一下,用戶內存分區。
一、用戶空間

通過對用戶空間內存劃分的了解,現在我們來探討一下,static全局變量和普通全局變量的
區別:
全局變量的說明之前再加以static 就構成了靜態的全局變量。
一、存儲位置
全局變量本身就是靜態存儲方式,靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上并無不同。
二、作用域
static全局變量和普通全局變量兩者的區別在于非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。
總結:
全局變量的作用域:整個源程序都可使用。
Static修飾的全局變量的作用域:限于當前源文件內使用。
三、初始化
1.靜態變量的初始化是在編譯時進行,變量的賦值是在函數或程序運行時進行。
2.靜態變量只初始化一次,但可以通過賦值的方式多次修改靜態變量的值。
3.全局變量和靜態變量在進入main 前被初始化

