區域性變數可以與全域性變數重名,但是區域性變數會遮蔽全域性變數。要使用全域性變數,需要使用::。在函式體內引用變數會用到同名的區域性變數而不是全域性變數,對於一些編譯器來說,在同乙個函式體內可以定義多個同名的區域性變數。例如我們可以在乙個函式內部,在兩個迴圈中都定義同名的區域性變數i,而區域性變數i的作用域在那個迴圈體內
具體來說,全域性變數和區域性變數的區別如下:
作用域不同:全域性變數的作用域為整個程式,而區域性變數的作用域為當前函式或迴圈等
記憶體儲存方式不同:全域性變數儲存在全域性資料區中,區域性變數儲存在棧區
生命期不同:全域性變數的生命期和主程式一樣,隨程式的銷毀而銷毀,區域性變數在函式內部或迴圈內部,隨函式的退出或迴圈退出就不存在了
使用方式不同:全域性變數在宣告後程式的各個部分都可以用到,但是區域性變數只能在區域性使用。函式內部會優先使用區域性變數再使用全域性變數
需要注意一點的是,區域性變數不能賦值為同名全域性變數的值。
全域性變數 靜態全域性變數 靜態區域性變數 區域性變數
全域性和靜態變數都在堆裡。這句話應該錯了,應該是放在常量資料段 全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用...
全域性變數 靜態全域性變數 靜態區域性變數 區域性變數
全域性和靜態變數都在堆裡。全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用在定義它的那個檔案裡,卻不能用在程式中...
全域性變數 靜態全域性變數區域性變數 靜態區域性變數
對於乙個完整的程式,在記憶體中的分布情況如下圖 區 low address 全域性資料區 堆區 棧區 high address 一般程式把新產生的動態資料存放在堆區,函式內部的自動變數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料 即使是函式內部的靜態區域性變數 也存放在全域性資料區。...