学C++再谈变量

概述


   变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable) 的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。


命名,定义


    变量,这个词对于我们编程人员来说是再熟悉不过的了,不论它在什么编程语言里都会存在,而且本质都是相同的,唯一不同的就是他们的命名规则,定义形式,大同小异。在C++,C# ,Java中定义格式基本一致,为:数据类型 变量名;或 数据类型  变量名= 初值;C++中特有的格式:数据类型 变量名(初值);而在VB中有些不同的是:变量名  as  数据类型  。


作用域


   说到变量,作用域是我们不得不谈的。关于它们的作用域在C++中因为继承了C语言的语言风格,所以是以定义的位置不同来区分的,可分为文件作用域,函数作用域,块作用域和函数原型作用域,其中文件作用域属于全局作用域,其他三者均为局部作用域。而在VB中是以关键字和定义的位置来共同决定的,在过程变量以关键字Dim 或Static来定义,模块变量要在模块的变量声明部分已关键字dim 或private来定义,而全局变量则在模块声明部分以Public关键字来定义。


声明周期


   从空间上我们以作用域描述了变量,那现在我们再来从时间上看看变量,从时间方面来描述变量,在编程语言里统称为变量的生命周期。当然了因语言的不同,称呼,叫法有些大同小异,在C++中叫做变量的存储类型,分为auto型,Register型,extern型,static型。auto是定义局部的动态变量的,默认省略。Register是寄存器变量,是沿用C语言中的,在高级编程中很少用。Extern是配合全局变量定义的,是全局变量的扩展声明。Static是静态变量,在大部分编程语言中基本都相同。而在VB中声明周期是以Dim定义动态变量,Static来定义静态变量的。

    谈到变量时,往往我们都会联想到与它相对应的常量,下面我们来看看在C++中关于常量的定义。在C++中常量分为数值常量,符号常量,和常变量。


常量

    在C++中数值常量的使用和其他语言中的没有什么区别,在这里就不赘述了。我们主要来看看符号常量和常变量的定义。

符号常量

   在C++中符号常量的定义和其他的编程语言中有很大的区别,在C++中符号常量是以预处理命令来处理的。格式为:#define 符号常量名数值  ,如:#define  PI  3.14。注意:因为符号常量的定义是预处理命令,所以定义符号常量是切记不能用赋值符号,且不以分号结尾。如:#define  PI  = 3.14  和 #define  PI  3.14;都是错误的。

常变量

    在C++中常变量的定义格式与变量类似,格式:const  数据类型  符号常量名  =  数值;其中Const 和数据类型的位置是可以调换的。它 和变量不同的是在定义时必须在前加Const并为其赋值,并且在程序中一旦为其赋值不可更改,所以被称为常量。其实C++中的常变量就是VB中的符号常量,虽然为常量但是和数值常量,符号常量有着本质的不同,C++或其他的编程语言中普通常量在指令中是不占内存单元的,但是C++中的常变量(VB中的符号常量)是要占内存单元的,实质是一种特殊的,内存单元中值固定不变的一种变量,本质也是一个内存单元。唯一和变量不同的是它的值在程序中是固定不变的。


发布了48 篇原创文章 · 获赞 10 · 访问量 17万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章