+ -
当前位置:首页 → 问答吧 → 将变量比喻成一个装数据的盒子,是不是不太严谨呀?

将变量比喻成一个装数据的盒子,是不是不太严谨呀?

时间:2010-07-26

来源:互联网

本帖最后由 go_hao 于 2010-07-26 11:18 编辑

将变量比喻成一个装数据的盒子,是不是不太严谨呀?

        int a;
        a=6;
        a=12;
        a=999;
很多书,都将变量形容成装数的盒子,我认为不对,假如按这种比喻假设一下,情况是什么
比如以上代码,定义了变量a,并赋值为6
将在内存中建立了一个盒子,里面有数字6

下面执行 a=12,则将内存中数字为6的位置,将数字改成12,
再执行 a=999,则将数字为12的地方,改为999.

我的理解对吗?可是这样不对的吧。
因为a是标量呀,标量是不能被更改的,所以正确的应该是
a=6时,新建一个对象6,将变量a指向6,当执行a=12时,再新建一个对象12,让变量a指向12,此时对象6就自动消失了。
当执行a=999时,新建一个对象999,使变量a指向对象999,然后对象12也自动消失了。

我的前后两次描述 ,哪个正确呢?

作者: go_hao   发布时间: 2010-07-26

不明白,

作者: ecjtubaowp   发布时间: 2010-07-26



QUOTE:
不明白,
ecjtubaowp 发表于 2010-07-26 11:18




    刚才没打完字,不小心发贴了。现在已经编辑,不知的说明白了没有。

作者: go_hao   发布时间: 2010-07-26

额,两种说法的区别在于,你的int是普通变量还是一个对象。
普通变量见第一种说法,对象见第二种说法。

作者: davelv   发布时间: 2010-07-26

如果你的学生不是这块料,就别费劲了,转专业吧。

作者: prolj   发布时间: 2010-07-26



QUOTE:
如果你的学生不是这块料,就别费劲了,转专业吧。
prolj 发表于 2010-07-26 11:27



什么意思,就凭这个问题,我就不能学了吗?

作者: go_hao   发布时间: 2010-07-26

回复 go_hao
LZ很有悟性。这就是两种不同的语言模型。前一种比如c/c++,后一种比如python等基于引用的对象模型的动态语言。

作者: donglongchao   发布时间: 2010-07-26

LZ从Python开始学编程的吧?

作者: tempname2   发布时间: 2010-07-26

支持第一個.

作者: pandaiam   发布时间: 2010-07-26

结合指针,就会理解成第一种了

作者: hellioncu   发布时间: 2010-07-26

变量以及对应的值存在一种关联,但这并不是简单的包含关系。
变量的意义在于把值用与这个值无关的名称来代替,这样就不必预先知道数据而可以参与运算了。
计算机科学的“变量”与数学“变量”是不同的。数学变量可以代表变化过程,有它的定义域或值域,与时间无关,除非约定它是时间的函数。但计算机变量在某一时刻对应的值是确定的,是一种状态而不只是范围。

不要尝试用非本专业的概念去“比喻”专业性较强的概念,而应该慢慢地体会。

作者: langue   发布时间: 2010-07-26

变量我个人理解就是一块内存的名子,变量的内容就是这块内存装的东西。以上代码可以理解为:
  1.         int a;  /* 有一块名叫a的内存,内存里只能装 整型数据,这块内存的大小也就是整型的大小了 */
  2.         a=6;  /* 向a这块内存中装入整型6
  3.         a=12; /* 赂a这块内存中装入整型12,即盖住以前的6 */
  4.         a=999; /* 同上 */
复制代码

作者: zhangsuozhu   发布时间: 2010-07-26



QUOTE:
LZ从Python开始学编程的吧?
tempname2 发表于 2010-07-26 13:02




    确实,最近看些python的书。

作者: go_hao   发布时间: 2010-07-26

相关阅读 更多