1. 程式人生 > >變量與存儲空間及其存儲結構

變量與存儲空間及其存儲結構

變量類型和存儲

C程序中變量作為數據存儲在計算機內存中,不同的變量類型對應物理硬件內存不同的存儲位置。


總的來說,變量按照作用範圍的劃分(空間)有局部變量和全局變量。按照作用時間上的劃分有靜態存儲和動態存儲。不同的作用域和作用時間組合有靜態局部變量,靜態全局變量,局部變量和外部全局變量。不同變量類型在內存中的存儲位置也不一樣。


不同的編譯系統和編程語言的計算機內部存儲的劃分不一樣。C語言程序的內存劃分為五部分:靜態存儲區(全局區),棧區,堆區,文字常量區,程序代碼區。


局部變量定義在函數內部,它的作用域是變量定義的位置到函數的結束。函數操作執行完畢後變量所占內存空間釋放。存儲在內存中堆,棧或者寄存器中。存儲在棧中變量由系統釋放,存儲在堆中由自己釋放。


靜態局部變量定義在函數內部,數據類型前加static作為標識符。作用域是變量定義的位置到變量所在函數的末尾。函數結束後變量的值保留,保留時間是整個程序周期。存儲在靜態存儲區。


全局變量定義在函數外它的作用域為從變量定義處開始,到本程序文件的末尾。如果外部變量不在文件的開頭定義,其有效的作用範圍只限於定義處到文件終了。如果在定義點之前的函數想引用該外部變量,則應該在引用之前用關鍵字 extern對該變量作“外部變量聲明。全局變量存儲在內存的靜態存儲區。


靜態全局變量,在全局變量的數據類型前加static,在多文件程序中,變量只能在當前文件中調用。




變量與存儲空間及其存儲結構