地址
前面咱们说了,数据在存储过程中,为了方便,将存储介质分成了不同的区域和格子。为了方便的找到数据,又给每个存储的格子,也就是存储单元,分配了地址。但是这些地址是一长串数,不好记,怎么办?起个名字吧,这个名字,就是变量名。为什么叫变量名呢?因为这个地址里的数据,大多数时候,是可以修改的,也就是可以变化的,所以叫变量名。
变量
说是变量,其实有些数据在运行的时候是不变的,那些就叫常量,常量可以说是变量的一种特例吧。变量其实就是内存中数据的一个别名,方便是记忆和使用的。知道了这个名字,就知道这个数据在哪里(地址),也就能找到数据值了。注意,这里的数据不指定具体的类型。
变量类型
但是,就像数学中,有整数,小数,实数,复数等等类型一样,计算机中,数据也是有类型的。但是,前面不是说了么,计算机中数据存的时候只是0或1这样存的,怎么表示不同的类型呢?这其实中间要有一个翻译的过程。比如0b 0010,如果说它是整数类型,也就整型,那它就表示3,为什么是3呢?因为0010是二进制,转成十进制,就是3。那如果说它是字符型,它是什么字符呢?可以查下ascii码表,查表可知,它表示ETX这个特殊符号。
所以,变量类型存在的意义,就是把存储单元中存储的二进制数据转变成实际数据时用到的一个翻译选项,不同的变量类型,在翻译的时候要用不同的翻译方法。
指针
那指针,又是什么东西呢?指针,其实就是地址。它,可以是任意类型数据的地址。这就厉害了,任意类型的数据都有指针,所以,指针也有指针,或者说,地址也有地址,就好像你家有一个地址,但是这个地址在物业那里有一个通讯录,通讯录里有你家的地址,你家的地址在通讯录的某页某行处。你家,可以看成是一个存储单元,你家的地址是你家的指针,假设你叫张三,那“张三家”,就是你家的别名,也就是你家的变量名,你家地址在物业通讯录里的那条记录,就是你家地址的指针,也就是你家指针的指针。
理论上,指针可以有很多级,或是很多层,但实际应用中,别太复杂,不然就分不清了。