指针:指针指向一块儿内存,它的内容是指向内存的地址。
引用:某一块儿内存的别名。
区别:
A.引用必须初始化。指针不必须被初始化(dangergous)。
int i;
int &ref1 = i;//ok
int &ref2;//error
B.不能有NULL引用,引用必须与合法的内存单元相关联。指针可以为空。
int *p = NULL;
int &ref = p;//dangerous
C.只能引用一次,不可以重复引用。指针可以多次指向。
int a = 0;
int b = 1;
int &ref = a;//right
&ref = b;//error
D.指针使用时需要解引用,引用不需要。
E.sizeof()引用是引用对象的大小,sizeof()指针是指针本身的大小。
F.合法性。指针在使用时总应该被检查,防止其空。而引用则不必。