變量與存儲空間及其存儲結構
阿新 • • 發佈:2017-07-02
變量類型和存儲
C程序中變量作為數據存儲在計算機內存中,不同的變量類型對應物理硬件內存不同的存儲位置。
總的來說,變量按照作用範圍的劃分(空間)有局部變量和全局變量。按照作用時間上的劃分有靜態存儲和動態存儲。不同的作用域和作用時間組合有靜態局部變量,靜態全局變量,局部變量和外部全局變量。不同變量類型在內存中的存儲位置也不一樣。
不同的編譯系統和編程語言的計算機內部存儲的劃分不一樣。C語言程序的內存劃分為五部分:靜態存儲區(全局區),棧區,堆區,文字常量區,程序代碼區。
局部變量定義在函數內部,它的作用域是變量定義的位置到函數的結束。函數操作執行完畢後變量所占內存空間釋放。存儲在內存中堆,棧或者寄存器中。存儲在棧中變量由系統釋放,存儲在堆中由自己釋放。
靜態局部變量定義在函數內部,數據類型前加static作為標識符。作用域是變量定義的位置到變量所在函數的末尾。函數結束後變量的值保留,保留時間是整個程序周期。存儲在靜態存儲區。
全局變量定義在函數外,它的作用域為從變量定義處開始,到本程序文件的末尾。如果外部變量不在文件的開頭定義,其有效的作用範圍只限於定義處到文件終了。如果在定義點之前的函數想引用該外部變量,則應該在引用之前用關鍵字 extern對該變量作“外部變量聲明。全局變量存儲在內存的靜態存儲區。
靜態全局變量,在全局變量的數據類型前加static,在多文件程序中,變量只能在當前文件中調用。
變量與存儲空間及其存儲結構