根據區域性和全域性、靜態和非靜態,可以將變數分為4種:非靜態區域性變數、非靜態全域性變數、靜態區域性變數和靜態全域性變數,為方便起見,下稱為區域性變數、全域性變數、靜態區域性變數和靜態全域性變數。
從作用域上:
1. 區域性變數只在宣告它的函式中可用;
2. 全域性變數在宣告它的原始檔中可用,可通過extern關鍵字被其他原始檔使用;
3. 靜態區域性變數只在宣告它的函式中可用;
4. 靜態全域性變數只在宣告它的原始檔中可用,其他原始檔不可用。
從儲存域(生存週期)上:
1. 區域性變數儲存在棧區,函式返回後被**;
2. 剩下三者儲存在靜態儲存區,程式執行結束後被**。
其他:1. 區域性變數在每次呼叫函式時都要分配一次記憶體,如果沒有初始化,那麼值不可知;
2. 剩下三者只分配一次記憶體,如果沒有初始化,則由編譯器初始化為0。
綜上,區域性變數與靜態區域性變數的區別是生存週期,全域性變數與靜態全域性變數的區別是作用域。
區域性變數,區域性靜態變數,全域性變數,全域性靜態變數分別
c 記憶體到底分幾個區?一 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶,呵呵。3 全域性...
全域性變數,全域性靜態變數,區域性靜態變數,區域性變數
變數可以分為全域性變數 靜態全域性變數 靜態區域性變數和區域性變數。按照儲存區分 全域性變數 靜態全域性變數和靜態區域性變數都存放在記憶體的全域性資料區,區域性變數存放在記憶體的棧區。按作用域分 全域性變數在整個工程檔案內都有效 靜態全域性變數只在定義它的檔案內有效 靜態區域性變數只在定義它的函式內...
區域性變數,區域性靜態變數,全域性變數,全域性靜態變數分別
c 記憶體到底分幾個區?一 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶,呵呵。3 全域性...