变量的六个属性

http://www.cnblogs.com/snandy/archive/2011/03/01/1967806.html
http://www.cnblogs.com/snandy/archive/2011/03/01/1968195.html
http://www.cnblogs.com/snandy/archive/2011/03/01/1967962.html
变量是计算机对内存单元的抽象,他是编程语言最重要的概念。

一般我们队内存单元的访问限制是通过变量的六个属性完成的

变量有6个属性(或者说从6个方面去描述变量)
名字/别名,代表的是对内存单元的标识符,表示内存单元
地址/左值
值/右值
类型
作用域
生存期/生命期

1、名字/别名
名字就是内存单元的标识符
当多个名字访问的都是同一个存储地址时(或者说多个名字都 绑定/约束 于同一个存储地址),可称这些名字为 别名。使用别名有损于程序的可读性,然而却很难从一门语言中完全消除。如下

//java
public static void main(String[] args) {   
    String name = "Jack Ma";
    String alias = name;   
    name = "XXX";

    System.out.println(name);
    System.out.println(alias);
}
//C
int main(int argc,char **argv)
{
    char argch[]="I Love You";
    char *pc=&argch;
    char *pch=pc;
    printf("%s\t%s\n",pc,pch);
    *(pch+2)='A';
    printf("%s\t%s\n",pc,pch);
}

可以看到两个指针指向同一块内存地址,通过指针更改一个字符,另外一个指针是不知情的。
结果详情

2、地址/左值
计算机中所有的数据都是存放在存储器中的,一般把存储器中的一个字节称为一个存储单元。为了正确的访问这些存储单元,需要为每个存储单元编个号。根据编号即可准确的找到该内存单元。内存单元的编号就称为 地址 。

在许多语言中,程序中同一个 名字/标识符 可以在不同的时间,与不同的 地址 关联/绑定 。
变量的地址有时也称为变量的左值(left value),或许是因为各种语言中变量经常位于赋值语句的左边表示地址。

又或许在地址图上编号总是位于左边,值总是在右边

或者这样

3 值/右值

变量的值是指与这个变量相关联的存储单元的内容。可以将计算机的存储单元想象成抽象的单元,而非物理单元。
现代计算机多数以字节为单位,一个字节有八位长度。
变量的值有时也称为变量的右值(right value),因为变量常被用于赋值语句的右边(参考左值)。

4 类型

类型 决定了变量可以存储的值的范围,且定义了该类型的操作集合。
如Java中int类型占4个字节,取值范围是-2147483648~2147483647,对其可进行加减乘除及取模运算。

5 作用域

作用域是指变量的可见性问题。即决定了那些子过程和函数过程可访问该变量。
各种语言的划分也不同,如有的变量作用域分为:局部、窗体、块和全局。有的则只有局部、全局之分。
如C、C++、Java中有块级作用域,JavaScript中则没有 。

6 生存期/生命期

生存期/生命期 指的是何时创建,何时释放。生存期/生命期 与 存储绑定 密切相关。

如在Java中的一个方法中声明的一个变量,该变量在方法执行时创建,执行后释放。

int main(int argc,char **argv)
{
    char argch[]="I Love You";
    char *pc=&argch;
    char *pch=pc;
    printf("%s\t%s\n",pc,pch);
    *(pch+2)='A';
    printf("%s\t%s\n",pc,pch);
}

如在C中的main方法中声明的一个变量,argch[],pc,pch变量在方法执行时创建,方法执行完后释放。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值