1、c++
c++的变量:存储某类数据的内存单元的名字。
变量的类型就是所存储数据的类型。变量的类型要声明,声明后变量只能存储此类型数据(变量的大小和变量之上的操作就确定了)。对变量来说大小是该内存单元的大小,对数据来说大小是其占用内存的大小。变量也包括类的对象,与基础数据类型是一致的。所以类的建立也相当于自定义一个新的数据类型。
a=b解释:把b内存单元存储的数据赋值给a
a=a+1解释:把a内存单元存储的数据增加1,数据的位置不变
c++的指针:c++的变量是多么好理解,多么好使用,而且是接近底层的。但是,c++仅靠变量就会出现问题。比如函数的参数传递只能是值的传递了。所以引进了指针。指针变量也是变量,只不过是存储的内存地址罢了,但是通过指针变量的传值,就可以间接地进行控制同一内存单元了。
c++的引用:就是别名,就是另起一个名字,建议直接叫别名,别叫引用,不然可能和java混淆。
把c++本身当一个类,基本数据类型变量就是它的成员变量,内置的函数和运算符等就是它的方法。将这种思想延伸出去、、、就是完全面向对象的编程语言比如:java
2、java
java的变量:存储基础数据类型的变量和c++意义完全一致
java的引用:类的对象不会给你对应的变量(内存单元名字)去使用,而是把对象的“引用”给你使用。形式上仍用赋值号。如
Student s1=new Student();这里s不叫变量,而叫引用。引用,引而用之。它是一个使用对象的把手、钩子、名字,当要使用别的对象时,自然可以把把手(钩子)再转移,或是说把名字再给别人用。它和c++的指针非常像(s1=翻译成s1指向,等号不再是传值而是指向),通过s1可以操控这个Student对象。
s1=s2解释:s1引用了s2所引用的对象。
通过引用的使用,我们无法也不用直接和内存单元打交道,这使得语言的抽象层次提高了,还有更多安全性的考量。
3、python
python的变量:python的变量和c++完全不同,也不是一个意思,我更倾向于把它理解成java中的引用。python的所有基本数据类型都是对象。而在python中s1=s2中等号被翻译成引用更为合适:s1引用s2所引用的对象。
当然,需要格外注意的是python的所有基本数据类型都是对象,而又把五种基本数据类型分为可变与不可变的。这导致对于数字、字符数据的引用传递和c++、java中的引用传递不一样,因为数字对象竟然不能变化!也就是说a=3只是a指向了3!这可能让人刚开始有些难受。不过理解了python中根本没有‘变量’,数据都是对象,变量都是引用,之后,一切将变得非常清晰。