天天看點

變量的含義

一、基本定義:

是計算機語言中能儲存計算結果或能表示值的抽象概念。

了解:

  1. 我們在程式中會經常定義一些變量來儲存和處理資料。從本質上看,變量代表了一段可操作的記憶體,也可以認為變量是記憶體的符号化表示。
  2. 當程式需要使用記憶體時,可以定義某種類型的變量。此時編譯器根據變量類型配置設定一定大小的記憶體空間。程式可以通過變量名來通路對應的記憶體;

二、資料類型與變量的關系

變量的資料類型決定了對應記憶體的大小,那麼存儲類型則影響着對記憶體的使用方式,使用方式具體就是說字啊什麼時間、程式的什麼地方可以使用變量,即變量的生命周期和作用域。

  1. 儲存變量的區域

    程式運作時記憶體中有三個區域可以儲存變量:靜态存儲區、棧(stack)、堆(heap);

    根據變量定義的位置可分為全局變量(定義在函數體外的變量)和局部變量(定義在函數體内的變量)。

1.所有的全局變量和靜态局部變量(定義時使用關鍵字static)都儲存在靜态存儲區,其特點:在編譯時配置設定記憶體空間并進行初始化。在程式運作區間,變量一直存在,直到程式結束,變量對你應的記憶體空間才被釋放。

變量的生命周期

2.所有的非靜态成員變量(又稱為自動變量)儲存在棧(stack)中,其特點是:在變量所在的函數或子產品被執行時動态建立,函數或子產品執行完時,變量對應的記憶體空間被釋放。換句話說,函數或子產品每被執行一次,局部變量就會重新被配置設定空間。如果變量定義時沒有初始化,那麼變量中的值是随機數。

3.所有使用malloc配置設定的記憶體(又稱為動态記憶體)都在堆(heap)中,其特點是:一般使用指針來通路動态配置設定的記憶體。既可以通過free來手動釋放動态記憶體,也可以在程式結束時由系統自動釋放。

變量的的作用域

作用域是變量的可見範圍,即在變量的生命周期内,程式的哪些部分可以使用變量。

全局變量的作用域從定義點開始一直到源檔案的結束。如果要在定義點之前使用全局變量的話就需要使用關鍵字extern對作用域進行擴充。全局變量預設是可以被其他檔案引用的。如果希望僅限于本檔案使用的話,需要在定義時使用關鍵字static。

對于局部變量來說,無論是靜态局部變量還是自動變量,作用域都僅限于定義該變量的函數或子產品。

動态記憶體隻要沒有被釋放就可以在程式的任何地方使用,前提是要知道動态記憶體的位址