什么是變量變量的存儲類型
什么是變量變量的存儲類型
變量來源于數學,是計算機語言中能儲存計算結果或能表示值抽象概念。那么你對變量了解多少呢?以下是由學習啦小編整理關于什么是變量的內容,希望大家喜歡!
變量的介紹
變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數式語言(如Haskell)中,變量可能是不可變(immutable)的。在一些語言中,變量可能被明確為是能表示可變狀態(tài)、具有存儲空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對象)來指稱這種抽象,而不嚴格地定義“變量”的準確外延。
變量的命名規(guī)則
首先,我們必須給變量取一個合適的名字,就好像每個人都有自己的名字一樣,否則就難以區(qū)分了?!≡赩B6中,變量的命名必須遵循以下規(guī)則:
(1)變量名必須以字母或下劃線打頭,名字中間只能由字母、數字和下劃線“_”組成;最后一個字符可以是類型說明符;
(2)變量名的長度不得超過255個字符;
(3)變量名在有效的范圍內必須是唯一的。有效的范圍就是引用變量可以被程序識別、使用的作用范圍——例如一個過程、一個窗體等等。有關引用變量作用范圍的內容,將在以后介紹。
(4)變量名不能是VB中的保留字(關鍵字),也不能是末尾帶類型說明符的保留字,但可以把保留字嵌入變量名, 關鍵字是指VB6語言中的屬性、事件、方法、過程、函數等系統(tǒng)內部的標識符。如已經定義的詞(if、endif、while、loop等)、函數名(len、format、msgbox等)。像Print、Print$是非法的,而Myprint是合法的。 例如: strName1,intMax_Length,intLesson,strNo3等是合法的變量名,而A&B,all right,3M,_Number等是非法的變量名。
注意:
(1)變量名在VB中是不區(qū)分大小寫的(如ABC、aBc、abc等都是一樣的)。C語言中區(qū)分大小寫。不同的語言有不同的規(guī)則。
(2)定義和使用變量時,通常要把變量名定義為容易使用閱讀和能夠描述所含數據用處的名稱,而不要使用一些難懂的縮寫如A或B2等。例如:假定正在為水果鋪編一個銷售蘋果的軟件。我們需要兩個變量來存儲蘋果的價格和銷量。此時,可以定義兩個名為Apple_Price和Apple_Sold的變量。每次運行程序時,用戶就這兩個變量提供具體值,這樣看起來就非常直觀。具體方法是:通過用一個或多個單詞組成有意義的變量名來使變量意義明確。例如,變量名SalesTaxRate就比Tax或Rate的意義明確得多。
(3)根據需要混合使用大小寫字母和數字。一個合理協(xié)議是,變量中每個單詞的第一個字母大寫,例如:DateOfBirth。
(4)另一個合理協(xié)議是,每個變量名以兩個或三個字符縮寫開始,這些字符縮寫對應于變量要存儲數據的數據類型。例如,使用strName來說明Name變量保存字符串型數據。這種命名方法叫匈牙利命名法
格式 變量類型 + 變量名字
比如剛才說的strname "str" 是"string"的縮寫 "Name" 則是變量名字
注意 變量類型都是小寫 而且變量名字是開頭大寫
C# 命名方法
stringstrName
VB 命名方法
DimstrNameasString
雖然無須過多地關注字符縮寫的細節(jié),但以后還是需要看一下這方面的約定。在Visual Basic聯(lián)機幫助和許多Visual Basic高級編程的書籍中都可以找到這一約定的細節(jié)。
變量的存儲類型
我們在程序中會經常定義一些變量來保存和處理數據。從本質上看,變量代表了一段可操作的內存,也可以認為變量是內存的符號化表示。當程序中需要使用內存時,可以定義某種類型的變量。此時編譯器根據變量的數據類型分配一定大小的內存空間。程序就可以通過變量名來訪問對應的內存了。
如果說變量的數據類型決定了對應內存的大小,那么存儲類型則影響著對應內存的使用方式。所謂使用方式,具體說就是在什么時間、程序的什么地方可以使用變量,即變量的生命周期和作用域。
先了解一些基本常識。一、在程序運行時內存中有三個區(qū)域可以保存變量:靜態(tài)存儲區(qū)、棧(stack)和堆(heap)。二、根據變量定義的位置可分為全局變量(定義在函數體外的變量)和局部變量(定義在函數體內的變量,包括形參)。
所有的全局變量和靜態(tài)局部變量(定義時使用關鍵字static)都保存在靜態(tài)存儲區(qū),其特點是:在編譯時分配內存空間并進行初始化。在程序運行期間,變量一直存在,直到程序結束,變量對應的內存空間才被釋放。
而所有的非靜態(tài)局部變量(又稱為自動變量)保存在棧(stack)中,其特點是:在變量所在的函數或模塊被執(zhí)行時動態(tài)創(chuàng)建,函數或模塊執(zhí)行完時,變量對應的內存空間被釋放。換句話說,函數或模塊每被執(zhí)行一次,局部變量就會重新被分配空間。如果變量定義時沒有初始化,那么變量中的值是隨機數。
所有用malloc分配的內存(又稱為動態(tài)內存)都在堆(heap)中,其特點是:一般通過指針來訪問動態(tài)分配的內存。即可以通過free來手動釋放動態(tài)內存,也可以在程序結束時由系統(tǒng)自動釋放。
以上討論的是變量的生命周期,下面來看作用域。作用域指的是變量的可見范圍,即在變量的生命周期內,程序的哪些部分可以使用該變量。
全局變量的作用域從定義點開始一直到源文件的結束。如果要在定義點之前使用全局變量的話就需要使用關鍵字extern對作用域進行擴展。全局變量缺省是可以被其他文件引用的。如果希望僅限于本文件使用的話,需要在定義時使用關鍵字static。
對于局部變量來說,無論是靜態(tài)局部變量還是自動變量,作用域都僅限于定義該變量的函數或模塊。
動態(tài)內存只要沒有被釋放就可以在程序的任何地方使用,前提是要知道動態(tài)內存的地址。
注:static加在全局變量前影響的是作用域,加在局部變量前影響的是生命周期。
看過“變量的存儲類型”的人還看了:
4.如何定義全局變量
5.變量用英語怎么說