1 非空区别:
在任何情况下都不能使用指向空值的引用,而指针却可以。
不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。
2 合法性区别:
在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
3 可修改区别:
指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象。
4 应用区别:
考虑用指针的情况:
1)考虑到存在不指向任何对象的可能。
2)需要能够在不同的时刻指向不同的对象。
考虑用引用的情况:
总是指向一个对象,并且一旦指向一个对象后就不会改变指向,那么就应该使用引用。