1. 本质
首先我们从编译器存储的角度来看reference和pointer的区别
我们也可看到pointer和reference的值都是ebp-0Ch
(即第一个局部变量a的地址)。
所以reference再底层的存储方式和pointer是一样的,都是存储了变量的地址。
所以每次给reference赋值的时候,默认取出了变量的地址。
2. 区别
两者区别就在于编译器把他们视作不同的类型,所以有不同的操作。
reference可以看作是弱化版的pointer,因为reference一旦初始化就不能修改reference里面存储的地址。也就是说reference一旦初始化就从一而终指向初始时的地址,不能修改。
reference在使用时也自动把pointer指向的值取出来用。不需要自己取出。
简单来说reference就是无法改地址的指针。