(1)非空区别:
在任何情况下都不能使用指向空值的引用。 一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空置给该变量。相反,如果你变量肯定指向一个对象,假如你的设计不允许变量为空,这时你就可以将变量声明为引用。不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针更高。
(2)合法性区别:
在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
(3)可修改区别。指针与引用的一个重要的区别就是指针可以被重新赋值以指向别的不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指向的对象其内容可以改变。
(4)应用区别。