C++變量的儲存類別及特點

C++語言中定義了4種儲存類別,分別是auto變量,static變量,register變量。

  • 靜態變量通常是在變量定義時就分配固定的存儲單元並一直保持不變,直至整個程序結束,他們存儲在靜態存儲區中。
  • 動態變量是在程序執行過程中使用它時才分配存儲單元,使用完畢立即將存儲單元釋放。

1、auto變量

自動變量存儲類型是C++語言程序中默認的存儲類型。函數內未加存儲類型說明的變量均視爲自動變量,也就是說自動變量可以省去關鍵字auto。

自動變量的特點:

  • 自動變量的作用於僅限於定義該變量的個體內。
  • 自動變量屬於動態存儲方式,變量的內存分配在棧中,當函數調用結束後,自動變量的值會被釋放。
  • 由於自動變量的作用於和生存期都侷限於定義他的個體內(函數或複合語句內),因此不同的個體中允許使用同名的變量而不會混淆。

2、static變量

在聲明變量前加關鍵字static,t可以將變量聲明爲靜態變量。靜態局部變量的值在函數調用結束後不會消失,靜態全局變量只能在本源文件中使用。

static變量特點

  • 靜態變量在函數內蒂尼,在程序退出時釋放,在整個程序運行期間不釋放,也就是說它的生命週期爲整個程序
  • 靜態變量的作用域與自動變量相同,在函數內定義就在函數內使用,儘管改變量沒有被釋放,但不能使用它,如再次定義它的函數時,它又可以繼續使用。
  • 編譯器會爲靜態局部變量賦予0值(今天變量和全局變量,如果沒有顯式初始化,都會被初始化爲0)

3、rejister變量

通常變量的值存放在內存中,當對一個變量頻繁讀寫時,需要反覆訪問內存儲器,華爲大梁的存取時間。爲了提高效率,C++語言可以將變量聲明爲寄存器變量,這種變量將局部變量的值直接存放在cpu的寄存器中,使用時不用訪問內存,而直接從寄存器中讀寫。寄存器變量的說明符號爲 register。

  • 寄存器變量屬於動態存儲方式。凡是需要採用靜態存方式的量不能定義爲寄存器變量。
  • 編譯程序會自動決定哪個變量使用寄存器存儲。register起到程序優化的作用。

4、extern 變量

在一個源文件中定義的變量和函數只能被本文件中的函數調用,一個C++程序中會有許多源文件,如果使用非本源文件的全局變量呢?C++提供了extern關鍵字來解決這個問題。在使用其他源文件的全局變量時,只需要在本源文件中使用extern來生命變量。

編譯系統不再爲全局變量分配內存,而是改變非本源區全局變量的值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章