虽然指针和引用都可以间接访问另一个值,但他们之间有两个重要区别。第一个区别在于引用总是指向某个对象:定义引用时必须初始化。第二个区别在于赋值行为的差异:给引用赋值修改的是该引用所关联对象的值,而并不是使引用与另外一个对象关联。举例如下:
将一个指针赋给另一个指针:
int val1=1024,val2=2048;
int *p1=&val1,*p2=&val2;
p1=p2;//p1指向val2
而
int &ri=val1,&ri2=val2;
ri1=ri2;
这个赋值操作修改了ri1引用的值val1对象,而并非引用本身。