指针和引用的区别:
- 指针可以不用初始化,通过赋值可以指向任意同类型的内存,引用必须做初始化,而且一旦引用绑定一块内存后,就不可以在修改了
- sizeof运算符下,指针的大小永远是4(x64为8),引用的大小是引用所绑定内存的大小
- 指针可以为空,引用一定不为空
- 使用指针时编译器一定会对其检测是否为空,空指针访问,而引用则不需要检测是否为空,因为不存在空的引用
其实指针和引用在底层汇编上是相同的,定义一个引用变量相当于定义了一个指针变量,然后将引用内存的地址写到指针中,当通过引用变量修改内存时,先访问了指针里面的地址,然后再在这个地址的内存里面写入修改的值。