學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > 什么是變量變量的存儲(chǔ)類型

什么是變量變量的存儲(chǔ)類型

時(shí)間: 謝君787 分享

什么是變量變量的存儲(chǔ)類型

  變量來(lái)源于數(shù)學(xué),是計(jì)算機(jī)語(yǔ)言中能儲(chǔ)存計(jì)算結(jié)果或能表示值抽象概念。那么你對(duì)變量了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于什么是變量的內(nèi)容,希望大家喜歡!

  變量的介紹

  變量可以通過(guò)變量名訪問(wèn)。在指令式語(yǔ)言中,變量通常是可變的;但在純函數(shù)式語(yǔ)言(如Haskell)中,變量可能是不可變(immutable)的。在一些語(yǔ)言中,變量可能被明確為是能表示可變狀態(tài)、具有存儲(chǔ)空間的抽象(如在Java和Visual Basic中);但另外一些語(yǔ)言可能使用其它概念(如C的對(duì)象)來(lái)指稱這種抽象,而不嚴(yán)格地定義“變量”的準(zhǔn)確外延。

  變量的命名規(guī)則

  首先,我們必須給變量取一個(gè)合適的名字,就好像每個(gè)人都有自己的名字一樣,否則就難以區(qū)分了?!≡赩B6中,變量的命名必須遵循以下規(guī)則:

  (1)變量名必須以字母或下劃線打頭,名字中間只能由字母、數(shù)字和下劃線“_”組成;最后一個(gè)字符可以是類型說(shuō)明符;

  (2)變量名的長(zhǎng)度不得超過(guò)255個(gè)字符;

  (3)變量名在有效的范圍內(nèi)必須是唯一的。有效的范圍就是引用變量可以被程序識(shí)別、使用的作用范圍——例如一個(gè)過(guò)程、一個(gè)窗體等等。有關(guān)引用變量作用范圍的內(nèi)容,將在以后介紹。

  (4)變量名不能是VB中的保留字(關(guān)鍵字),也不能是末尾帶類型說(shuō)明符的保留字,但可以把保留字嵌入變量名, 關(guān)鍵字是指VB6語(yǔ)言中的屬性、事件、方法、過(guò)程、函數(shù)等系統(tǒng)內(nèi)部的標(biāo)識(shí)符。如已經(jīng)定義的詞(if、endif、while、loop等)、函數(shù)名(len、format、msgbox等)。像Print、Print$是非法的,而Myprint是合法的?!±纾骸trName1,intMax_Length,intLesson,strNo3等是合法的變量名,而A&B,all right,3M,_Number等是非法的變量名。

  注意:

  (1)變量名在VB中是不區(qū)分大小寫(xiě)的(如ABC、aBc、abc等都是一樣的)。C語(yǔ)言中區(qū)分大小寫(xiě)。不同的語(yǔ)言有不同的規(guī)則。

  (2)定義和使用變量時(shí),通常要把變量名定義為容易使用閱讀和能夠描述所含數(shù)據(jù)用處的名稱,而不要使用一些難懂的縮寫(xiě)如A或B2等。例如:假定正在為水果鋪編一個(gè)銷售蘋(píng)果的軟件。我們需要兩個(gè)變量來(lái)存儲(chǔ)蘋(píng)果的價(jià)格和銷量。此時(shí),可以定義兩個(gè)名為Apple_Price和Apple_Sold的變量。每次運(yùn)行程序時(shí),用戶就這兩個(gè)變量提供具體值,這樣看起來(lái)就非常直觀。具體方法是:通過(guò)用一個(gè)或多個(gè)單詞組成有意義的變量名來(lái)使變量意義明確。例如,變量名SalesTaxRate就比Tax或Rate的意義明確得多。

  (3)根據(jù)需要混合使用大小寫(xiě)字母和數(shù)字。一個(gè)合理協(xié)議是,變量中每個(gè)單詞的第一個(gè)字母大寫(xiě),例如:DateOfBirth。

  (4)另一個(gè)合理協(xié)議是,每個(gè)變量名以兩個(gè)或三個(gè)字符縮寫(xiě)開(kāi)始,這些字符縮寫(xiě)對(duì)應(yīng)于變量要存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型。例如,使用strName來(lái)說(shuō)明Name變量保存字符串型數(shù)據(jù)。這種命名方法叫匈牙利命名法

  格式 變量類型 + 變量名字

  比如剛才說(shuō)的strname "str" 是"string"的縮寫(xiě) "Name" 則是變量名字

  注意 變量類型都是小寫(xiě) 而且變量名字是開(kāi)頭大寫(xiě)

  C# 命名方法

  stringstrName

  VB 命名方法

  DimstrNameasString

  雖然無(wú)須過(guò)多地關(guān)注字符縮寫(xiě)的細(xì)節(jié),但以后還是需要看一下這方面的約定。在Visual Basic聯(lián)機(jī)幫助和許多Visual Basic高級(jí)編程的書(shū)籍中都可以找到這一約定的細(xì)節(jié)。

  變量的存儲(chǔ)類型

  我們?cè)诔绦蛑袝?huì)經(jīng)常定義一些變量來(lái)保存和處理數(shù)據(jù)。從本質(zhì)上看,變量代表了一段可操作的內(nèi)存,也可以認(rèn)為變量是內(nèi)存的符號(hào)化表示。當(dāng)程序中需要使用內(nèi)存時(shí),可以定義某種類型的變量。此時(shí)編譯器根據(jù)變量的數(shù)據(jù)類型分配一定大小的內(nèi)存空間。程序就可以通過(guò)變量名來(lái)訪問(wèn)對(duì)應(yīng)的內(nèi)存了。

  如果說(shuō)變量的數(shù)據(jù)類型決定了對(duì)應(yīng)內(nèi)存的大小,那么存儲(chǔ)類型則影響著對(duì)應(yīng)內(nèi)存的使用方式。所謂使用方式,具體說(shuō)就是在什么時(shí)間、程序的什么地方可以使用變量,即變量的生命周期和作用域。

  先了解一些基本常識(shí)。一、在程序運(yùn)行時(shí)內(nèi)存中有三個(gè)區(qū)域可以保存變量:靜態(tài)存儲(chǔ)區(qū)、棧(stack)和堆(heap)。二、根據(jù)變量定義的位置可分為全局變量(定義在函數(shù)體外的變量)和局部變量(定義在函數(shù)體內(nèi)的變量,包括形參)。

  所有的全局變量和靜態(tài)局部變量(定義時(shí)使用關(guān)鍵字static)都保存在靜態(tài)存儲(chǔ)區(qū),其特點(diǎn)是:在編譯時(shí)分配內(nèi)存空間并進(jìn)行初始化。在程序運(yùn)行期間,變量一直存在,直到程序結(jié)束,變量對(duì)應(yīng)的內(nèi)存空間才被釋放。

  而所有的非靜態(tài)局部變量(又稱為自動(dòng)變量)保存在棧(stack)中,其特點(diǎn)是:在變量所在的函數(shù)或模塊被執(zhí)行時(shí)動(dòng)態(tài)創(chuàng)建,函數(shù)或模塊執(zhí)行完時(shí),變量對(duì)應(yīng)的內(nèi)存空間被釋放。換句話說(shuō),函數(shù)或模塊每被執(zhí)行一次,局部變量就會(huì)重新被分配空間。如果變量定義時(shí)沒(méi)有初始化,那么變量中的值是隨機(jī)數(shù)。

  所有用malloc分配的內(nèi)存(又稱為動(dòng)態(tài)內(nèi)存)都在堆(heap)中,其特點(diǎn)是:一般通過(guò)指針來(lái)訪問(wèn)動(dòng)態(tài)分配的內(nèi)存。即可以通過(guò)free來(lái)手動(dòng)釋放動(dòng)態(tài)內(nèi)存,也可以在程序結(jié)束時(shí)由系統(tǒng)自動(dòng)釋放。

  以上討論的是變量的生命周期,下面來(lái)看作用域。作用域指的是變量的可見(jiàn)范圍,即在變量的生命周期內(nèi),程序的哪些部分可以使用該變量。

  全局變量的作用域從定義點(diǎn)開(kāi)始一直到源文件的結(jié)束。如果要在定義點(diǎn)之前使用全局變量的話就需要使用關(guān)鍵字extern對(duì)作用域進(jìn)行擴(kuò)展。全局變量缺省是可以被其他文件引用的。如果希望僅限于本文件使用的話,需要在定義時(shí)使用關(guān)鍵字static。

  對(duì)于局部變量來(lái)說(shuō),無(wú)論是靜態(tài)局部變量還是自動(dòng)變量,作用域都僅限于定義該變量的函數(shù)或模塊。

  動(dòng)態(tài)內(nèi)存只要沒(méi)有被釋放就可以在程序的任何地方使用,前提是要知道動(dòng)態(tài)內(nèi)存的地址。

  注:static加在全局變量前影響的是作用域,加在局部變量前影響的是生命周期。
看過(guò)“變量的存儲(chǔ)類型”的人還看了:

1.變量的同義詞有哪些

2.變量定義規(guī)則

3.Java中變量和常量之間的區(qū)別

4.如何定義全局變量

5.變量用英語(yǔ)怎么說(shuō)

6.java中成員變量和局部變量的區(qū)別

1567639