是計算機語言中能儲存計算結果或能表示值的抽象概念。
理解:我們在程式中會經常定義一些變數來儲存和處理資料。從本質上看,變數代表了一段可操作的記憶體,也可以認為變數是記憶體的符號化表示。
當程式需要使用記憶體時,可以定義某種型別的變數。此時編譯器根據變數型別分配一定大小的記憶體空間。程式可以通過變數名來訪問對應的記憶體;
變數的資料型別決定了對應記憶體的大小,那麼儲存型別則影響著對記憶體的使用方式,使用方式具體就是說字啊什麼時間、程式的什麼地方可以使用變數,即變數的生命週期和作用域。
儲存變數的區域
程式執行時記憶體中有三個區域可以儲存變數:靜態儲存區、棧(stack)、堆(heap);
根據變數定義的位置可分為全域性變數(定義在函式體外的變數)和區域性變數(定義在函式體內的變數)。
1.所有的全域性變數和靜態區域性變數(定義時使用關鍵字static)都儲存在靜態儲存區,其特點:在編譯時分配記憶體空間並進行初始化。在程式執行區間,變數一直存在,直到程式結束,變數對你應的記憶體空間才被釋放。2.所有的非靜態成員變數(又稱為自動變數)儲存在棧(stack)中,其特點是:在變數所在的函式或模組被執行時動態建立,函式或模組執行完時,變數對應的記憶體空間被釋放。換句話說,函式或模組每被執行一次,區域性變數就會重新被分配空間。如果變數定義時沒有初始化,那麼變數中的值是隨機數。
3.所有使用malloc分配的記憶體(又稱為動態記憶體)都在堆(heap)中,其特點是:一般使用指標來訪問動態分配的記憶體。既可以通過free來手動釋放動態記憶體,也可以在程式結束時由系統自動釋放。作用域是變數的可見範圍,即在變數的生命週期內,程式的哪些部分可以使用變數。
全域性變數的作用域從定義點開始一直到原始檔的結束。如果要在定義點之前使用全域性變數的話就需要使用關鍵字extern對作用域進行擴充套件。全域性變數預設是可以被其他檔案引用的。如果希望僅限於本檔案使用的話,需要在定義時使用關鍵字static。
對於區域性變數來說,無論是靜態區域性變數還是自動變數,作用域都僅限於定義該變數的函式或模組。
動態記憶體只要沒有被釋放就可以在程式的任何地方使用,前提是要知道動態記憶體的位址
makfile 中 變數的含義
例子 dep sed dependencies q makefile tmp dep sed dependencies q makefile tmp make for i in init c do echo n init cpp m i done tmp make cp tmp make makef...
各種指標變數的含義
語句int pointer 5 中,pointer表示的是乙個指向包含5個整型元素的一維陣列的指標。語句int pointer 5 中,pointer表示的是乙個指標陣列的名字,包含5個指向整型資料的指標。語句int pointer 中,pointer表示的是乙個指向函式的指標,函式返回值為乙個整數...
Nginx的各個變數的含義
ngx http core module模組支援內建變數,他們的名字和apache的內建變數是一致的。首先是說明客戶請求title中的行,例如htt t,http cookie等等。此外還有其它的一些變數 args此變數與請求行中的引數相等 content length等於請求行的 content ...