1. 指针和引用的差别:
(1)非空差别:
在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果我们使用一个变量并将其指向一个对象,但是该变量在某些时候也可能不指向任何对象,这个时候就应该把变量声明为指针,因为这样我们可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如我们的设计不允许变量为空,这时就可以把变量声明为引用。不存在 指向空值的引用这个条件使得使用引用的代码效率比使用指针的代码高。
(2)合法性区别:
在使用引用前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空。
(3)可修改区别
指针可以被重新赋值以指向另一个不同的对象。但是引用总是指向在初始化时被指定的对象,以后不能改变,但是指针的对象及其内容都可以改变。
(4)应用区别:
(a)在考虑到存在不指向任何对象的情况下,可使用指针;
(b) 需要在不同的时刻指向不同的对象的情况下,可使用指针;
(c)总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么应该使用引用。