1. 非空区别。在任何情况下都不能使用指向空值的引用。 一个引用必须指向某些对象。比如说说下面的程序为错误的。
int &a; // error
指针可以指向一个空的变量。
int *p; // correct
int *pp = NULL; // correct
2. 合法性区别。在使用引用之前不需要测试其合法性。相反,指针则应总被测试,防止其为空。
3. 可修改区别。指针可以被重新赋值指向另一个对象,但是引用则总是指向在初始化时被指向的对象,以后不能被改变。
4. 引用区别。总的来说,在以下情况下你应该使用指针,一是考虑到存在不指向任何对象的可能,而是你需要再不同的时刻指向不同的对象。
int &a; // error
指针可以指向一个空的变量。
int *p; // correct
int *pp = NULL; // correct
2. 合法性区别。在使用引用之前不需要测试其合法性。相反,指针则应总被测试,防止其为空。
3. 可修改区别。指针可以被重新赋值指向另一个对象,但是引用则总是指向在初始化时被指向的对象,以后不能被改变。
4. 引用区别。总的来说,在以下情况下你应该使用指针,一是考虑到存在不指向任何对象的可能,而是你需要再不同的时刻指向不同的对象。