指针
众所周知,数据类型其实只对人有意义,数据在机器里存储,就是连续的0和1,机器本身不会区分所谓的数据类型。
而编程语言里数据类型的意义,就是如何用0和1来表示不同的数据类型,以及如何把不同数据类型的运算转换成0和1的运算。
所以对任何一种具有数据类型的变量来说,其本质就是变量长度加运算规则。
而指针,其长度,由编译器和系统决定。
至于运算规则,最难的无非就是指针的加减和取地址、访问指针。
- 指针加减:指针的加减其实很容易理解,就是指针加减指针类型对应的数据类型的长度,比如int型指针就是指针加减int型的长度。
- 取地址:准确的来说,叫做取指针,就是返回一个指针变量,这个指针变量的类型由被取的变量决定,比如整数型变量取指针,就是整数型指针,整数型指针变量取指针,就是整数型指针变量的指针。
- 访问指针:就是根据指针所指向的地址,返回一个变量,这个变量的类型和指针类型对应,如访问整数型指针变量返回的就是整数型变量,访问整数型指针的指针变量,返回的就是整数型变量指针。
引用
引用类型是对已经定义的变量的引用,就相当于有两个变量指向同一个空间。
** 引用在第一次赋值之后与被引用变量几乎没有差别,所有运算规则相同,长度也一样,所以可以和原变量一样使用。 **
引用的第一次赋值:
- 引用第一次赋值需要引用类型和被引用类型一样。
- 引用之后的赋值和被引用类型的赋值相同。
所以,利用引用第一次赋值的特性,引用经常用来作为参数,在传递参数时,引用被第一次赋值,成功引用外部的变量,而在函数内部,引用和普通变量几乎没有差别,可以省去类似C中一系列复杂的指针操作。