全域性變數和靜態全域性變數動態和靜態的差別

2021-08-28 07:58:20 字數 630 閱讀 8179

全域性變數是不顯式用static修飾的全域性變數,但全域性變數預設是***動態的***,作用域是整個工程,在乙個檔案內定義的全域性變數,在另乙個檔案中,通過extern 全域性變數名的宣告,就可以使用全域性變數。全域性靜態變數是顯式用static修飾的全域性變數,作用域是宣告此變數所在的檔案,其他的檔案即使用extern宣告也不能使用。

拓展資料

全域性變數也稱為外部變數,它是在 函式外部定義的變數。它不屬於哪乙個 函式,它屬於乙個源程式檔案。其作用域是從定義該變數的位置開始至原始檔結束。

全域性變數是在所有函式體的外部定義的,程式的所在部分(甚至其它檔案中的**)都可以使用。全域性變數不受作用域的影響(也就是說,全域性變數的生命期一直到程式的結束)。如果在乙個檔案中使用 extern關鍵字來宣告另乙個檔案中存在的全域性變數,那麼這個檔案可以使用這個資料。

在全域性變數前加乙個 static,使該變數只在這個原始檔中可用,稱之為全域性靜態變數,全域性靜態變數就是靜態全域性變數。

在多檔案組成的程式裡,全域性變數與全域性靜態變數是不同的。在某一層次宣告的變數的作用域就終止於該變數所在層次的末尾。唯一的區別是全域性靜態變數使得該變數成為定義該變數的原始檔所獨享。如果在乙個檔案中使用 extern關鍵字來宣告另乙個檔案中存在的靜態全域性變數,這個檔案也不能夠使用這個資料。

全域性變數和靜態全域性變數

全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...

全域性變數和靜態變數

變數可以分為全域性變數 靜態全域性變數 靜態區域性變數和區域性變數 按儲存區域分 全域性變數 靜態全域性變數和靜態區域性變數都存放在記憶體的全域性資料區,區域性變數存放在記憶體的棧區 按作用域分 全域性變數在整個工程檔案內都有效 靜態全域性變數只在定義它的檔案內有效 靜態區域性變數只在定義它的函式內...

全域性變數和靜態變數

如果定義乙個全域性變數,未被初始化,則變數被預設初始化,但區域性變數未被初始化,則該值未定義。內建型別和陣列一樣 定義全域性靜態變數 在全域性變數前加個關鍵字static,該全域性變數變為全域性靜態變數。全域性靜態變數有以下特點 1 在全域性資料區內分配記憶體 2 如果沒有初始化,其預設值為0 3 ...