EchoDemo's Blogs

指针和引用的区别

(1)可以有const指针,但是没有const引用。

(2)指针可以有多级,但是引用只能是一级(int **p;合法而int &&a;是不合法的)。

(3)如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏。

(4)指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了。

(5)指针可以是空值,可以在任何时候被初始化。而引用不可以为空且在被创建的时候,必须初始化。此处引用类似于const的指针。

(6)指针和引用的自增(++)运算意义不一样。指针自增是所指的数据类型变量的下一个数据类型的地址。而引用是引用所指向的变量的值加1。

(7)”sizeof(引用)”得到的是所指向的变量(对象)的大小(即引用的sizeof为所引用的对象在内存中分配空间的大小(单位字节)),而”sizeof(指针)”得到的是指针本身的大小。在C++当中,存放一个地址和一个int类型的大小相同:4字节。即sizeof(指针)=4。

(8)指针是一个变量,只不过这个变量存储的是一个地址,是指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。引用变量的主要作用是用作函数的形参,通过将引用变量用作形参,函数将使用原始数据,而不是其副本。

注意:要把引用的&和取地址运算符&区分开来,引用并不是取地址的意思,引用符号是类型标识的一部分。由于引用是产生变量的别名,故常量不可使用引用。指针变量其实是unsigned类型的整数,这也解释了为什么在C++当中指针类型的变量的sizeof就是4个字节。

🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------