本质:引用是别名,指针是地址,具体的:
①从现象上看,指针在运行时可改变其所指向的值,而引用一旦和某个对象绑定后就不在改变。这句话可以这样理解:指针可以被重新赋值以指向另一个不同的对象。但是引用总指向在初始化时被指定的对象,以后不能改变,但是指定的对象内容可以改变。
②从内存上分配看,程序为指针变量分配内存区域,而不用为引用分配内存区域,引用声明时必须初始化,从而指向一个已经存在的对象,引用不能指向空值。
③从编译上看,程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值是指针变量的地址值,而引用在符号表上对应的地址值是引用对象的地址值。符号表生成后就不会再改变,因此至真可以改变指向的对象(指针变量的值可以改),而引用对象不能改。这是使用指针不安全而使用引用安全的主要原因。
④从汇编角度看 , 指针和引用是一样的
原文链接:https://blog.csdn.net/u012611644/article/details/89055038