(1)指针可以为空,所以用指针时需要判空,而引用不能为空,当被创建时,必须初始化。从安全性来看引用占优
(2)引用没有const,指针有const,const的指针不可变,指向的内容可变(有const指针,没有const引用)
(3)对指针和引用求sizeof,结果不同,sizeof(指针)是指针本身大小它的大小,在32位下为4字节,在64为下为8字节,sizeof(引用)得到的是指向变量的大小。
(4)指针可以重新赋值,指向另一个对象,指针是一个变量。引用只能绑在最初的对象上,引用就是一个别名。
(5)指针可以有多级,而引用只有一级(int **p合法;int &&a不合法)
(6)如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄露;