计算机变量(computer variables)是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。
在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
中文名
计算机变量
外文名
computer variables
应用领域
计算机属 于
计算机语言中能储存计算结果
特 点
可以通过变量名访问
来源于
数学
计算机变量变量介绍
编辑
语音
由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。
简而言之,变量是用于跟踪几乎所有类型信息的简单工具。变量声明后没有赋值的话,编译器会自动提示并赋予默认值。变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。例如,可以创建一个名为Click Count的变量来存储用户单击Web页面上某个对象的次数。
使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。
计算机变量命名规则
编辑
语音
首先,我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。
匈牙利命名法Hungarian
广泛应用于象Microsoft Windows这样的环境中。
Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。
匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
匈牙利命名法中常用的小写字母的前缀:
前缀类型
a 数组 (Array)
b 布尔值 (Boolean)
by 字节 (Byte)
c 有符号字符 (Char)
cb 无符号字符 (Char Byte)
cr 颜色参考值 (ColorRef)
cx,cy 坐标差(长度 ShortInt)
dw Double Word
fn 函数
h Handle(句柄)
i 整型
l 长整型 (Long Int)
lp Long Pointer
m_ 类的成员
n 短整型 (Short Int)
np Near Pointer
p Pointer
s 字符串型
sz 以null做结尾的字符串型 (String with Zero End)
w Word
骆驼命名法camelCase
骆驼式命令法,正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:
printEmployeePaychecks();
print_employee_paychecks();
第一个函数名使用了骆驼式命名法——函数名中的每一个逻辑断点都有一个大写字母来标记;第二个函数名使用了下划线法----函数名中的每一个逻辑断点都有一个下划线来标记。
骆驼式命名法近年来越来越流行了,在许多新的函数库和MicrosoftWindows这样的环境中,它使用得当相多。另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍。
帕斯卡命名法PascalCase
与骆驼命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写
public void
DisplayInfo();
string UserName;
二者都是采用了帕斯卡命名法.
在C#中,以帕斯卡命名法和骆驼命名法居多。
在C#中,简单的变量一般用camelCase规则,而比较高级的命名使用PascalCase。 如.net Framework的公共字段及公共属性。
MyData是一个帕斯卡命名的示例。 myData是一个骆驼命名法。
iMyData是一个匈牙利命名法,小写说明了变量的类型或者用途。
计算机变量作用域
编辑
语音
变量的作用域是指变量在程序中起的作用的范围。有的变量在整个程序中起作用,有的变量是在一个文件中起作用,有的变量是在一个函数中起作用,而有的变量只是在一个小程序段中起作用。从作用域的角度,变量可以分为局部变量和全局变量。[1]
计算机变量局部变量
在函数内部定义的变量称为局部变量,也称为内部变量。局部变量只在定义它的函数内有效,即只有定义他们的函数才能使用,不能被其他函数使用;
形式参数也是局部变量,只在它所在的函数中有效,其他的函数不能使用。
计算机变量全局变量
在函数外定义的变量称为全局变量,又称为外部变量。全局变量的作用域是从定义点开始直到文件尾,可以被作用域内的所有函数共用;
在同一个源文件中,如果全局变量和局部变量同名,则在局部变量的作用域内,全局变量不起作用。
计算机变量声明变量
编辑
语音
变量在使用前,必须在代码中进行声明,即创建该变量。在使用变量之前,大多数语言通常首先需要声明变量。就是说,必须事先告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。声明变量有两种方式分别是隐式声明、显式声明。在此以VB为例进行对两种方式进一步说明。
隐式声明:变量可以不经声明直接使用,此时VB给该变量赋予缺省的类型和值。这种方式比较简单方便,在程序代码中可以随时命名并使用变量,但不易检查。
显式声明:用声明语句创建变量。强制显式声明变量,为了避免写错变量名引起的麻烦,用户可以规定,只要遇到一个未经明确声明就当成变量的名字,程序都发出错误警告。方法是----强制显式声明变量。要强制显式声明变量,只须在类模块、窗体模块或标准模块的声明段中加入这条语句。
不同语言有不同的变量声明方式,例如声明变量的一种方式是使用Dim语句、Public语句和Private语句在Script中显式声明变量。另一种方式是通过直接在Script中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行Script时出现意外的结果。因此,最好使用Option Explicit语句显式声明所有变量,并将其作为Script的第一条语句。
计算机变量变量类型
编辑
语音
变量有两种类型:属性变量和用户自己建立的变量。
不同语言的变量划分有所差异,在此以C语言为例做简单说明。
C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量。前者是按变量作用范围来分的,而后者是按变量存储方式来分的。如果按存储占用空间来分,可以是整型变量、字符型变量、浮点型变量等。当然还有数组、结构体变量等。C语言还有一个重要变量:指针变量,它存放的值是一个内存地址。
计算机变量存储类型
编辑
语音
从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。
如果说变量的数据类型决定了对应内存的大小,那么存储类型则影响着对应内存的使用方式。
先了解一些基本常识。
一、在程序运行时内存中有三个区域可以保存变量:静态存储区、栈(stack)和堆(heap)。
二、根据变量定义的位置可分为全局变量(定义在函数体外的变量)和局部变量(定义在函数体内的变量,包括形参)。
所有的全局变量和静态局部变量(定义时使用关键字static)都保存在静态存储区,其特点是:在编译时分配内存空间并进行初始化。在程序运行期间,变量一直存在,直到程序结束,变量对应的内存空间才被释放。
而所有的非静态局部变量(又称为自动变量)保存在栈(stack)中,其特点是:在变量所在的函数或模块被执行时动态创建,函数或模块执行完时,变量对应的内存空间被释放。换句话说,函数或模块每被执行一次,局部变量就会重新被分配空间。如果变量定义时没有初始化,那么变量中的值是随机数。
所有用malloc分配的内存(又称为动态内存)都在堆(heap)中,其特点是:一般通过指针来访问动态分配的内存。即可以通过free来手动释放动态内存,也可以在程序结束时由系统自动释放。
参考资料
1.
王顺利.程序设计基础:北京邮电出版社,2014