1.指针是一个变量,存储的是一个地址,引用跟原来的变量实质上是同一个东西,是原变量的别名。
2.指针可以有多级(但是不能对指针进行取地址,因为地址本身不是变量是一个常量),引用只有一级。
3.指针可以为空(此时指向nullptr),引用不能为NULL且在定义时必须初始化。
4.指针在初始化后可以改变指向(常指针不可以),而引用在初始化之后不可再改变。
5.sizeof指针得到的是本指针的大小(sizeof数组名是数组的大小),sizeof引用得到的是引用所指向变量的大小。
6.当把指针作为参数进行传递时,也是将实参的一个拷贝传递给形参,两者指向的地址相同,但不是同一个变量,在函数中改变这个变量的指向不影响实参,而引用却可以(可以通过对指针解引用改变实参的值,此时跟引用能达到相同的效果)。
7.引用的底层实现还是一个const指针,因此定义一个引用会开辟一个指针大小的内存存放指针,但是引用本身不占内存。