指针(pointer)和引用(references)都是对另一个变量的一种关联,即通过指针和引用可以使用另一个变量。而它们最大的区别在于:指针是一个变量,而引用不是。但在c++底层中,引用是通过指针实现的,所以,在实现层面上来说,引用就是指针,但是在c++语法上来说,c++编译器并不为引用类型分配内存,所以引用不能为空,必须被初始化,一旦初始化不能更改引用对象。所有对引用的操作都是对原始对象的操作 。
指针是一个变量,它所存储的就是它所指向的变量的地址,而它同时也有着自己的地址。引用可以理解为变量的"小名”,它的地址也就是它引用的变量的地址。也可以说,指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。它们更细致的区别总结如下:
后续查阅资料的过程中,发现了自己理解的错误,因为是学习的过程,所以不删除错误,引以为戒。在上面提到引用不是一个变量,这是错误的,引用是一个变量,它在底层的实现就是一个变量,一个常量指针。C++对常量指针进行一些包装后就成了引用。
2020-01-10