Tag Archives: 引用

引用与指针的比较

引用和指针的区别在于下面几点:

1. 创建引用时必须初始化,而且不能初始化为null;  而指针可以不初始化,也可以初始化为null

int &a; //error, references must be initialized
int *p; //right
int &a = NULL; //error, can’t init as NULL
int *p = NULL; //right

2. 引用初始化后,就不再改变; 而指针随时可以改变所指的对象。

int a = 1;
int b = 2;
int &r = a; //r成为a的引用,即别名,r恒为a 的引用,不可改变
r = b;//此时不要以为r变成了b的引用,而是把b的值赋给了a, 此是a, r 都为b的值2
r = 3;//a, r的值都变成了3,b的值不变,仍为2

指针却是可以随时改变所指的对象

int a = 1;
int b = 2;
int *p = &a; // *p == 1, p初始化成了a的地址值
p = &b; // *p == 2,p地址值变了,p变成了b的地址值