1. 程式人生 > >全域性變數和靜態全域性變數動態和靜態的差別

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

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

拓展資料 全域性變數也稱為外部變數,它是在 函式外部定義的變數 它不屬於哪一個 函式,它屬於一個源程式檔案。其作用域是從定義該變數的位置開始至原始檔結束。 全域性變數是在所有函式體的外部定義的,程式的所在部分(甚至其它檔案中的程式碼)都可以使用。全域性變數不受作用域的影響(也就是說,全域性變數的生命期一直到程式的結束)。如果在一個檔案中使用 extern關鍵字來宣告另一個檔案中存在的全域性變數,那麼這個檔案可以使用這個資料。

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

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