複製鏈接
請複製以下鏈接發送給好友

變量

(計算機名詞)

鎖定
變量來源於數學,是計算機語言中能儲存計算結果或能表示抽象概念
變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數式語言(如Haskell)中,變量可能是不可變的。
在一些語言中,變量可能被明確為是能表示可變狀態、具有存儲空間的抽象(如在JavaVisual Basic中);但另外一些語言可能使用其它概念(如C對象)來指稱這種抽象,而不嚴格地定義“變量”的準確外延。 [1-2] 
中文名
變量
外文名
variable [7] 
特    點
可以通過變量名訪問
用    途
計算機編程

變量變量概述

變量在內存中的存儲 變量在內存中的存儲
由於變量讓你能夠把程序中準備使用的每一段數據都賦給一個簡短、易於記憶的名字,因此它們十分有用。變量可以保存程序運行時用户輸入的數據(如使用InputBox函數在屏幕上顯示一個對話框,然後把用户鍵入的文本保存到變量中)、特定運算的結果以及要在窗體上顯示的一段數據等。簡而言之,變量是用於跟蹤幾乎所有類型信息的簡單工具。
變量聲明後沒有賦值的話,編譯器會自動提示並賦予默認值。
變量是一種使用方便的佔位符,用於引用計算機內存地址,該地址可以存儲Script運行時可更改的程序信息。例如,可以創建一個名為Click Count的變量來存儲用户單擊Web頁面上某個對象的次數。使用變量並不需要了解變量在計算機內存中的地址,只要通過變量名引用變量就可以查看或更改變量的值。在VB Script中只有一個基本數據類型,即Variant,因此所有變量的數據類型都是Variant。 [3] 

變量命名規則

首先,我們必須給變量取一個合適的名字,就好像每個人都有自己的名字一樣,否則就難以區分了。 在VB6中,變量的命名必須遵循以下規則: [4] 
(1)變量名必須以字母或下劃線打頭,名字中間只能由字母、數字和下劃線“_”組成;最後一個字符可以是類型説明符;
(2)變量名的長度不得超過255個字符;
(3)變量名在有效的範圍內必須是唯一的。有效的範圍就是引用變量可以被程序識別、使用的作用範圍——例如一個過程、一個窗體等等。有關引用變量作用範圍的內容,將在以後介紹。
(4)變量名不能是VB中的保留字(關鍵字),也不能是末尾帶類型説明符的保留字,但可以把保留字嵌入變量名, 關鍵字是指VB6語言中的屬性、事件、方法、過程、函數等系統內部的標識符。如已經定義的詞(if、endif、while、loop等)、函數名(len、format、msgbox等)。像Print、Print$是非法的,而Myprint是合法的。 例如: strName1,intMax_Length,intLesson,strNo3等是合法的變量名,而A&B,all right,3M,_Number等是非法的變量名。
注意:
(1)變量名在VB中是不區分大小寫的(如ABC、aBc、abc等都是一樣的)。C語言中區分大小寫。不同的語言有不同的規則。
(2)定義和使用變量時,通常要把變量名定義為容易使用閲讀和能夠描述所含數據用處的名稱,而不要使用一些難懂的縮寫如A或B2等。例如:假定正在為水果鋪編一個銷售蘋果的軟件。我們需要兩個變量來存儲蘋果的價格和銷量。此時,可以定義兩個名為Apple_Price和Apple_Sold的變量。每次運行程序時,用户就這兩個變量提供具體值,這樣看起來就非常直觀。具體方法是:通過用一個或多個單詞組成有意義的變量名來使變量意義明確。例如,變量名SalesTaxRate就比Tax或Rate的意義明確得多。
(3)根據需要混合使用大小寫字母和數字。一個合理協議是,變量中每個單詞的第一個字母大寫,例如:DateOfBirth。
(4)另一個合理協議是,每個變量名以兩個或三個字符縮寫開始,這些字符縮寫對應於變量要存儲數據的數據類型。例如,使用strName來説明Name變量保存字符串型數據。這種命名方法叫匈牙利命名法
格式 變量類型 + 變量名字
比如剛才説的strname "str" 是"string"的縮寫 "Name" 則是變量名字
注意 變量類型都是小寫 而且變量名字是開頭大寫
C# 命名方法 [1] 
string strName
VB 命名方法 [2] 
Dim strName as String
雖然無須過多地關注字符縮寫的細節,但以後還是需要看一下這方面的約定。在Visual Basic聯機幫助和許多Visual Basic高級編程的書籍中都可以找到這一約定的細節。

變量存活期

變量存在的時間稱為存活期。Script級變量的存活期從被聲明的一刻起,直到Script運行結束。對於過程級變量,其存活期僅是該過程運行的時間,該過程結束後,變量隨之消失。在執行過程時,局部變量是理想的臨時存儲空間。可以在不同過程中使用同名的局部變量,這是因為每個局部變量只被聲明它的過程識別。

變量作用域

變量的作用域由聲明它的位置決定。如果在過程中聲明變量,則只有該過程中的代碼可以訪問或更改變量值,此時變量具有局部作用域並被稱為過程級變量。如果在過程之外聲明變量,則該變量可以被Script中所有過程所識別,稱為Script級變量,具有Script級作用域。

變量生存期

是指變量的分配與回收的全過程,

變量類型

屬性變量用户自己建立的變量。
當我們在窗體中設計用户界面時,vb6會自動為產生的對象(包括窗體本身)創建一組變量,即屬性變量,併為每個變量設置其缺省值。這類變量可供我們直接使用,比如引用它或給它賦新值。
用户也可以創建自己的變量,以便存放程序執行過程中的臨時數據或結果數據等等。在程序中,這樣的變量是非常需要的。下面就介紹這類變量的創建和使用方法。

變量聲明變量

變量在使用前,必須在代碼中進行聲明,即創建該變量。
在使用變量之前,大多數語言通常首先需要聲明變量。就是説,必須事先告訴編譯器在程序中使用了哪些變量,及這些變量的數據類型以及變量的長度。這是因為在編譯程序執行代碼之前編譯器需要知道如何給語句變量開闢存儲區,這樣可以優化程序的執行。
聲明變量有兩種方式分別是隱式聲明、顯式聲明。
隱式聲明:
變量可以不經聲明直接使用,此時VB給該變量賦予缺省的類型和值。這種方式比較簡單方便,在程序代碼中可以隨時命名並使用變量,但不易檢查。
顯式聲明:
用聲明語句創建變量。
強制顯式聲明變量:
為了避免寫錯變量名引起的麻煩,用户可以規定,只要遇到一個未經明確聲明就當成變量的名字,VB都發出錯誤警告。方法是----強制顯式聲明變量。要強制顯式聲明變量,只須在類模塊、窗體模塊標準模塊的聲明段中加入這條語句:
Option Explicit
這條語句是用來規定在本模塊中所有變量必須先聲明再使用,即不能通過隱式聲明來創建變量。在添加Option Explicit語句後,VB將自動檢查程序中是否有未定義的變量,發現後將顯示錯誤信息。
如果要自動插入Option Explicit語句,用户只要在“工具”菜單中選取“選項”命令,然後單擊“選項”對話框中的“編輯器”選項卡,再選中“要求變量聲明”選項,這樣VB就會在任何新模塊中自動插入Option Explicit語句,但只會在新建立的模塊中自動插入。所以對於已經建立的模塊,只能用手工方法向現有模塊添加Option Explicit語句。 [4]  [5] 

變量理變量範圍

變量的範圍確定了能夠知曉該變量存在的那部分代碼。在一個過程內部聲明變量時,只有過程內部的代碼才能訪問或改變那個變量的值;它有一個範圍,對該過程來説是局部的。但是,有時需要使用具有更大範圍的變量,例如這樣一個變量,其值對於同一模塊內的所有過程都有效,甚至對於整個應用程序的所有過程都有效。Visual Basic 允許在聲明變量時指定它的範圍。

變量存儲類型

我們在程序中會經常定義一些變量來保存和處理數據。從本質上看,變量代表了一段可操作的內存,也可以認為變量是內存的符號化表示。當程序中需要使用內存時,可以定義某種類型的變量。此時編譯器根據變量的數據類型分配一定大小的內存空間。程序就可以通過變量名來訪問對應的內存了。
如果説變量的數據類型決定了對應內存的大小,那麼存儲類型則影響着對應內存的使用方式。所謂使用方式,具體説就是在什麼時間、程序的什麼地方可以使用變量,即變量的生命週期和作用域。
先了解一些基本常識。一、在程序運行時內存中有三個區域可以保存變量:靜態存儲區、棧(stack)和堆(heap)。二、根據變量定義的位置可分為全局變量(定義在函數體外的變量)和局部變量(定義在函數體內的變量,包括形參)。
所有的全局變量和靜態局部變量(定義時使用關鍵字static)都保存在靜態存儲區,其特點是:在編譯時分配內存空間並進行初始化。在程序運行期間,變量一直存在,直到程序結束,變量對應的內存空間才被釋放。
而所有的非靜態局部變量(又稱為自動變量)保存在棧(stack)中,其特點是:在變量所在的函數或模塊被執行時動態創建,函數或模塊執行完時,變量對應的內存空間被釋放。換句話説,函數或模塊每被執行一次,局部變量就會重新被分配空間。如果變量定義時沒有初始化,那麼變量中的值是隨機數。
所有用malloc分配的內存(又稱為動態內存)都在堆中,其特點是:一般通過指針來訪問動態分配的內存。即可以通過free來手動釋放動態內存,也可以在程序結束時由系統自動釋放。
以上討論的是變量的生命週期,下面來看作用域。作用域指的是變量的可見範圍,即在變量的生命週期內,程序的哪些部分可以使用該變量。
全局變量的作用域從定義點開始一直到源文件的結束。如果要在定義點之前使用全局變量的話就需要使用關鍵字extern對作用域進行擴展。全局變量缺省是可以被其他文件引用的。如果希望僅限於本文件使用的話,需要在定義時使用關鍵字static。
對於局部變量來説,無論是靜態局部變量還是自動變量,作用域都僅限於定義該變量的函數或模塊。
動態內存只要沒有被釋放就可以在程序的任何地方使用,前提是要知道動態內存的地址。
注:static加在全局變量前影響的是作用域,加在局部變量前影響的是生命週期。 [3] 

變量變量類型

C語言中,變量分為全局變量和局部變量;也可以這樣分:自動變量,靜態變量.前者是按變量作用範圍來分的,而後者是按變量存儲方式來分的。
在C語言中,如果按存儲佔用空間來分,包括: [1] 
整型變量(代碼為int),整型變量包括長整型變量(代碼為long int)以及短整型變量(代碼為short int),字符型變量(代碼為char),浮點型變量(代碼float)等。當然還有數組,結構體變量等.但新手需要注意的是,每一種變量類型最終都對應的格式字符.如:%d。
圖示 圖示
操作系統變量 操作系統變量
C語言還有一個重要變量:指針變量.它存放的值是一個內存地址。C語言中變量名是有大小寫之分的,如SUN與sun就是兩個不同的變量名。
另一點,聲明變量時,可以不用聲明就直接賦值來決定變量類型的語言,這類語言變量的聲明通常被稱為弱類型,而如(c++等)必須先聲明,後使用,而且聲明時必須確定變量類型,這種就是嚴格的數據類型。
變量有兩種類型:屬性變量用户自己建立的變量。

變量JavaScript變量

變量變量

正如代數一樣,JavaScript 變量用於保存值或表達式。
可以給變量起一個簡短名稱,比如 x,或者更有描述性的名稱,比如 length
JavaScript 變量也可以保存文本值,比如 carname="Volvo"
變量名稱的規則
變量對大小寫敏感(yY 是兩個不同的變量)
變量必須以字母或下劃線開始
註釋:由於 JavaScript 對大小寫敏感,變量名也對大小寫敏感。 [5] 
實例
在腳本執行的過程中,可以改變變量的值。可以通過其名稱來引用一個變量,以此顯示或改變它的值。
本例為您展示原理。

變量聲明 變量

在 JavaScript 中創建變量經常被稱為“聲明”變量。
您可以通過 var 語句來聲明 JavaScript 變量:
var x;var carname;
var x; var carname;
在以上聲明之後,變量並沒有值,不過您可以在聲明它們時向變量賦值:
var x = 5; var carname = "Volvo";
var x = 5; var carname = "Volvo";
註釋:在為變量賦文本值時,請為該值加引號。

變量變量賦值

通過賦值語句向 JavaScript 變量賦值:
x = 5; carname = "Volvo";
x = 5; carname = "Volvo";
變量名在 = 符號的左邊,而需要向變量賦的值在 = 的右側。
在以上語句執行後,變量 x 中保存的值是 5,而 carname 的值是 Volvo
向未聲明變量賦值
如果您所賦值的變量還未進行過聲明,該變量會自動聲明。
這些語句:
x = 5; carname = "Volvo";
x = 5; carname = "Volvo";
與這些語句的效果相同:
var x = 5; var carname = "Volvo";
var x = 5; var carname = "Volvo";
重新聲明變量
如果您再次聲明瞭 JavaScript 變量,該變量也不會丟失其原始值。
var x = 5; var x;
var x = 5; var x;
在以上語句執行後,變量 x 的值仍然是 5。在重新聲明該變量時,x 的值不會被重置或清除。
JavaScript算術
正如代數一樣,您可以使用 JavaScript 變量來做算術:
y = x - 5; z = y + 5;
y = x - 5; z = y + 5

變量php變量

PHP 中的變量:變量用於存儲值,比如數字、文本字符串或數組。
一旦設置了某個變量,我們就可以在腳本中重複地使用它。
PHP 中的所有變量都是以 $ 符號開始的。
在 PHP 中設置變量的正確方法是:
$var_name = value;PHP 的入門者會忘記在變量的前面的 $ 符號。如果那樣做的話,變量將是無效的。
我們創建一個存有字符串的變量,和一個存有數值的變量:
<?php$txt = "Hello World!";$number = 16;?>
不必向 PHP 聲明該變量的數據類型。
根據變量被設置的方式,PHP 會自動地把變量轉換為正確的數據類型。
在強類型的編程語言中,您必須在使用前聲明變量的類型和名稱。
在 PHP 中,變量會在使用時被自動聲明。
php 中的變量用一個美元符號後面跟變量名來表示。變量名是區分大小寫的。
變量名與 php 中其它的標籤一樣遵循相同的規則。一個有效的變量名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。按照正常的正則表達式,它將被表述為:'[a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*'。
注: 在此所説的字母是 a-z,A-Z,以及 ASCII 字符從 127 到 255(0x7f-0xff)。
<?php$var = 'Bob';$Var = 'Joe';echo "$var, $Var"; // 輸出 "Bob, Joe"$4site = 'not yet'; // 非法變更名;以數字開頭$_4site = 'not yet'; // 合法變量名;以下劃線開頭$i站點is = 'mansikka'; // 合法變量名;可以用中文?>php 3 中,變量總是傳值賦值。那也就是説,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味着,例如,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。有關這種類型的賦值操作,請參閲表達式一章。
php 提供了另外一種方式給變量賦值:引用賦值。這意味着新的變量簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。這同樣意味着其中沒有執行復制操作;因而,這種賦值操作更加快速。不過只有在密集的循環中或者對很大的數組或對象賦值時才有可能注意到速度的提升。 [6] 
使用引用賦值,簡單地將一個 & 符號加到將要賦值的變量前(源變量)。例如,下列代碼片斷將輸出“My name is Bob”兩次:
<?php$foo = 'Bob'; // Assign the value 'Bob' to $foo$bar = &$foo; // Reference $foo via $bar.$bar = "My name is $bar"; // Alter $bar...echo $bar;echo $foo; // $foo is altered too.?>
有一點重要事項必須指出,那就是隻有有名字的變量才可以引用賦值。
<?php$foo = 25;$bar = &$foo; // This is a valid assignment.$bar = &(24 * 7); // Invalid; references an unnamed expression.function test(){ return 25;}$bar = &test(); // Invalid.?>

變量變量命名規則

變量名必須以字母或下劃線 "_" 開頭。
變量名只能包含字母數字字符以及下劃線。
變量名不能包含空格。如果變量名由多個單詞組成,那麼應該使用下劃線進行分隔(比如 $my_string),或者以大寫字母開頭(比如 $myString)。
參考資料
  • 1.    譚浩強 . C程序設計(第4版):清華大學出版社,2010.6
  • 2.    明日科技 .Visual Basic從入門到精通:清華大學出版社 ,2017.6
  • 3.    譚浩強 . C++程序設計(第3版):清華大學出版社 ,2015.8
  • 4.    索明何,邢海霞,方偉駿 . C語言程序設計 :機械工業出版社,2016.2
  • 5.    (美)弗蘭納根 .JavaScript權威指南 : 機械工業出版社 , 2012.4
  • 6.    列旭松 陳文 .PHP核心技術與最佳實踐(第2版):機械工業出版社,2018.9
  • 7.    劉堅,陶躍華,周克軍編. 計算機基礎培訓教程[M]. 成都:成都科技大學出版社, 1993.05:140