變數的屬性(全域變數、局部變數、動態變數、靜態變數等)

來源:互聯網
上載者:User

變數的屬性 

1、變數的分類

l         根據範圍:可分為全域變數和局部變數。

l           根據生存周期:可分為靜態儲存方式和動態儲存裝置方式,具體地又分為自動的(auto)、靜態(static)、寄存器的(register)、外部的(extern)。

靜態儲存方式是指在程式運行期間分配固定的儲存空間的方式,動態儲存裝置方式是在程式運行期間根據需要進行動態分配儲存空間的方式

 

2、變數的範圍和儲存類別的關係

每一個變數均有範圍儲存類別兩個屬性這些屬性共同用於描述一個變數,這些不同類型的變數與儲存位置的關係如下:

l          外部變數(全域變數)、靜態外部變數、靜態局部變數儲存在靜態儲存區。

l          自動局部變數(局部變數預設為自動局部變數)、函數形參儲存在動態儲存裝置區(即棧區)

l          不論是靜態儲存區還是動態儲存裝置區均屬於記憶體中的使用者區。

l          而寄存器變數是儲存在CPU寄存器中的而不是記憶體中。

 

3、與範圍相關的幾個屬性:

l          局部變數:在一個函數內部定義的變數是內部變數,它只在本函數範圍內有效,也就是說只有在本函數內才能使用它們,在此函數以外是不能使用這些變數的,這種類型的變數就稱為“局部變數”。

l          全域變數:在函數外定義的變數,可以為本源檔案中其它函數所公用,有效範圍為從定義變數的位置開始到本源檔案結束,這種類型的變數就稱為“全域變數”。

 

4、與儲存類型相關的幾個屬性:

l          atuo在聲明局部變數時,若不指定 static,預設均是 auto,這類變數都是動態分配儲存空間的,資料存放區在動態儲存裝置區中。

l         static在聲明局部變數時,使用關鍵字 static 將局部變數指定為“靜態局部變數”,這樣在函數調用結束後不消失而保留原值,即佔用的儲存單元不釋放,在下一次函數調用時,該變數已有值就是上次函數調用結束時的值。

l          register:在聲明動態局部變數或者函數形參時,可將變數聲明為register這樣編譯系統就會為變數分配一個寄存器而不是記憶體空間,通過這種方式可提升對某些局部變數頻繁調用的程式的效能。寄存器運算速度遠高於記憶體

l          extern:用於擴充全域變數的範圍。

1)         比如如果函數想引用一個外部變數,但該外部變數在該函數後定義,那麼這個函數需要使用 extern 來聲明變數,這樣才能使用在該函數後面定義的全域變數。

2)         此外,extern 還可以在多檔案的程式中聲明外部變數。


轉自:http://blog.csdn.net/21aspnet/article/details/2560072

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.