求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

变量查看源代码讨论查看历史

跳转至: 导航搜索
变量

变量(英語: variable ),来源于数学,是计算机语言中能储存 计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;[1]

但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义"变量"的准确外延

基本信息

中文名 变量 [2]

外文名 variable

变量1.png

定义 占位符

属性 计算机名词

介绍

由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。

变量声明后没有赋值的话 编译器会自动提示并赋予默认值

变量2.jpg

变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。例如,可以创建一个名为Click Count的变量来存储用户单击Web页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。在VB Script中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是Variant。

声明变量

声明变量的一种方式是使用Dim语句、Public语句和Private语句在Script中显式声明变量。例如:

Dim Degrees Fahrenheit

声明多个变量时,使用逗号分隔变量。例如:

Dim Top, Bottom, Left, Right

另一种方式是通过直接在Script中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行Script时出现意外的结果。因此,最好使用Option Explicit语句显式声明所有变量,并将其作为Script的第一条语句。

变量3.jpg

命名规则

首先,我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。 在VB6中,变量的命名必须遵循以下规则:

(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等是非法的变量名。

变量4.png

注意:

(1)变量名在VB中是不区分大小写的(如ABC、aBc、abc等都是一样的)。C语言中区分大小写。不同的语言有不同的规则。

(2)定义和使用变量时,通常要把变量名定义为容易使用阅读和能够描述所含数据用处的名称,而不要使用一些难懂的缩写如A或B2等。例如:假定正在为水果铺编一个销售苹果的软件。我们需要两个变量来存储苹果的价格和销量。此时,可以定义两个名为Apple_Price和Apple_Sold的变量。每次运行程序时,用户就这两个变量提供具体值,这样看起来就非常直观。具体方法是:通过用一个或多个单词组成有意义的变量名来使变量意义明确。例如,变量名SalesTaxRate就比Tax或Rate的意义明确得多。

(3)根据需要混合使用大小写字母和数字。一个合理协议是,变量中每个单词的第一个字母大写,例如:DateOfBirth。

(4)另一个合理协议是,每个变量名以两个或三个字符缩写开始,这些字符缩写对应于变量要存储数据的数据类型。例如,使用strName来说明Name变量保存字符串型数据。这种命名方法叫匈牙利命名法

变量5.png

格式 变量类型 + 变量名字

比如刚才说的strname "str" 是"string"的缩写 "Name" 则是变量名字

注意 变量类型都是小写 而且变量名字是开头大写

C# 命名方法

VB 命名方法

虽然无须过多地关注字符缩写的细节,但以后还是需要看一下这方面的约定。在Visual Basic联机帮助和许多Visual Basic高级编程的书籍中都可以找到这一约定的细节。

变量6.png

存活期

变量存在的时间称为存活期。Script级变量的存活期从被声明的一刻起,直到Script运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。

作用域

变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量,则该变量可以被Script中所有过程所识别,称为Script级变量,具有Script级作用域。

生存期

是指变量的分配与回收的全过程,

变量7.png

类型

属性变量和用户自己建立的变量。

当我们在窗体中设计用户界面时,vb6会自动为产生的对象(包括窗体本身)创建一组变量,即属性变量,并为每个变量设置其缺省值。这类变量可供我们直接使用,比如引用它或给它赋新值。

用户也可以创建自己的变量,以便存放程序执行过程中的临时数据或结果数据等等。在程序中,这样的变量是非常需要的。下面就介绍这类变量的创建和使用方法。

声明变量

变量在使用前,必须在代码中进行声明,即创建该变量。

变量8.png

在使用变量之前,大多数语言通常首先需要声明变量。就是说,必须事先告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。

声明变量有两种方式分别是隐式声明、显式声明。

隐式声明:

变量可以不经声明直接使用,此时VB给该变量赋予缺省的类型和值。这种方式比较简单方便,在程序代码中可以随时命名并使用变量,但不易检查。

显式声明:

用声明语句创建变量。

强制显式声明变量:

为了避免写错变量名引起的麻烦,用户可以规定,只要遇到一个未经明确声明就当成变量的名字,VB都发出错误警告。方法是----强制显式声明变量。要强制显式声明变量,只须在类模块、窗体模块或标准模块的声明段中加入这条语句:

变量9.jpg

Option Explicit

这条语句是用来规定在本模块中所有变量必须先声明再使用,即不能通过隐式声明来创建变量。在添加Option Explicit语句后,VB将自动检查程序中是否有未定义的变量,发现后将显示错误信息。

如果要自动插入Option Explicit语句,用户只要在"工具"菜单中选取"选项"命令,然后单击"选项"对话框中的"编辑器"选项卡,再选中"要求变量声明"选项

这样VB就会在任何新模块中自动插入Option Explicit语句,但只会在新建立的模块中自动插入。所以对于已经建立的模块,只能用手工方法向现有模块添加Option Explicit语句(只有再重新启动VB,这项功能才有效)。

变量范围

变量的范围确定了能够知晓该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic 允许在声明变量时指定它的范围。

1110222502-3.png

存储类型

我们在程序中会经常定义一些变量来保存和处理数据。从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。

如果说变量的数据类型决定了对应内存的大小,那么存储类型则影响着对应内存的使用方式。所谓使用方式,具体说就是在什么时间、程序的什么地方可以使用变量,即变量的生命周期和作用域。

先了解一些基本常识。一、在程序运行时内存中有三个区域可以保存变量:静态存储区、栈(stack)和堆(heap)。二、根据变量定义的位置可分为全局变量(定义在函数体外的变量)和局部变量(定义在函数体内的变量,包括形参)。

所有的全局变量和静态局部变量(定义时使用关键字static)都保存在静态存储区,其特点是:在编译时分配内存空间并进行初始化。在程序运行期间,变量一直存在,直到程序结束,变量对应的内存空间才被释放。

变量00.jpg

而所有的非静态局部变量(又称为自动变量)保存在栈(stack)中,其特点是:在变量所在的函数或模块被执行时动态创建,函数或模块执行完时,变量对应的内存空间被释放。换句话说,函数或模块每被执行一次,局部变量就会重新被分配空间。如果变量定义时没有初始化,那么变量中的值是随机数。

所有用malloc分配的内存(又称为动态内存)都在堆(heap)中,其特点是:一般通过指针来访问动态分配的内存。即可以通过free来手动释放动态内存,也可以在程序结束时由系统自动释放。

以上讨论的是变量的生命周期,下面来看作用域。作用域指的是变量的可见范围,即在变量的生命周期内,程序的哪些部分可以使用该变量。

全局变量的作用域从定义点开始一直到源文件的结束。如果要在定义点之前使用全局变量的话就需要使用关键字extern对作用域进行扩展。全局变量缺省是可以被其他文件引用的。如果希望仅限于本文件使用的话,需要在定义时使用关键字static。

对于局部变量来说,无论是静态局部变量还是自动变量,作用域都仅限于定义该变量的函数或模块。

动态内存只要没有被释放就可以在程序的任何地方使用,前提是要知道动态内存的地址。

变量10.jpg

注:static加在全局变量前影响的是作用域,加在局部变量前影响的是生命周期。

变量类型

C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的.

如果按存储占用空间来分,可以是整型变量,字符型变量,浮点型变量等.当然还有数组,结构体变量等.

C语言还有一个重要变量:指针变量.它存放的值是一个内存地址.

C语言中变量名是有大小写之分的,如SUN与sun就是两个不同的变量名。

另一点,声明变量时,可以不用声明就直接赋值来决定变量类型的语言如(javascript,flash cs3.0以前,等),这类语言变量的声明通常被称为弱类型,而如(c++等)必须先声明,后使用,而且声明时必须确定变量类型,这种就是严格的数据类型.

T01ebc40c7dc0e253cd.jpg

变量有两种类型:属性变量和用户自己建立的变量。

运用

JavaScript

正如代数一样,JavaScript 变量用于保存值或表达式。

可以给变量起一个简短名称,比如 x,或者更有描述性的名称,比如 length。

JavaScript 变量也可以保存文本值,比如 carname="Volvo"。

名称规则

变量对大小写敏感(y 和 Y 是两个不同的变量)

变量必须以字母或下划线开始

T010c157784d7976882.jpg

注释:由于 JavaScript 对大小写敏感,变量名也对大小写敏感。

实例

在脚本执行的过程中,可以改变变量的值。可以通过其名称来引用一个变量,以此显示或改变它的值。

本例为您展示原理。

变量

在 JavaScript 中创建变量经常被称为"声明"变量。

您可以通过 var 语句来声明 JavaScript 变量:

var x; var carname;

var x; var carname;

T01ab2d8c7ddf0e290b.jpg

在以上声明之后,变量并没有值,不过您可以在声明它们时向变量赋值:

var x = 5; var carname = "Volvo";

var x = 5; var carname = "Volvo";

注释:在为变量赋文本值时,请为该值加引号。

向变量赋值

通过赋值语句向 JavaScript 变量赋值:

x = 5; carname = "Volvo";

x = 5; carname = "Volvo";

变量名在 = 符号的左边,而需要向变量赋的值在 = 的右侧。

T01aa3eb81d68f57f67.png

在以上语句执行后,变量 x 中保存的值是 5,而 carname 的值是 Volvo。

向未声明的 JavaScript变量赋值

如果您所赋值的变量还未进行过声明,该变量会自动声明。

这些语句:

x = 5; carname = "Volvo";

x = 5; carname = "Volvo";

与这些语句的效果相同:

var x = 5; var carname = "Volvo";

T0122e7e1cf627cde0e.jpg

var x = 5; var carname = "Volvo";

重新声明 JavaScript变量

如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。

var x = 5; var x;

var x = 5; var x;

在以上语句执行后,变量 x 的值仍然是 5。在重新声明该变量时,x 的值不会被重置或清除。

JavaScript算术

正如代数一样,您可以使用 JavaScript 变量来做算术:

y = x - 5; z = y + 5;

变量-.png

y = x - 5; z = y + 5

php变量类型

PHP 中的变量:变量用于存储值,比如数字、文本字符串或数组。

一旦设置了某个变量,我们就可以在脚本中重复地使用它。

PHP 中的所有变量都是以 $ 符号开始的。

在 PHP 中设置变量的正确方法是:

$var_name = value;PHP 的入门者会忘记在变量的前面的 $ 符号。如果那样做的话,变量将是无效的。

我们创建一个存有字符串的变量,和一个存有数值的变量:

T01c55f9c71c565d615.jpg

<?php$txt = "Hello World!";$number = 16;?>

不必向 PHP 声明该变量的数据类型。

根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型。

在强类型的编程语言中,您必须在使用前声明变量的类型和名称。

在 PHP 中,变量会在使用时被自动声明。

php 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。

变量名与 php 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*'。

T01d0fa18d4e2a76d8c.jpg

注: 在此所说的字母是 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 4 提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,"成为其别名" 或者 "指向")了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行复制操作;因而,这种赋值操作更加快速。不过只有在密集的循环中或者对很大的数组或对象赋值时才有可能注意到速度的提升。

使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。例如,下列代码片断将输出"My name is Bob"两次:

T016ea533db480dc107.jpg

<?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)。

參考來源