1 指针和引用的区别
对象 是指一块能存储数据并具有某种类型的内存空间
int a = 10; int *p = a; int & b = a;
相同点:都是地址的概念
- 指针:由于指针
*p
也是对象,其本身也有地址&p
和存储的值p
,p
存储的数据类型实际为存储的对象的数据地址,故要访问存储的对象需要对变量名进行 “解引用”*p
。 - 引用:对象的别名,
b
为a
的别名。
不同点:
- 指针本身是一个实体,而引用仅仅是一个别名;
- 引用只能再定义时被初始化一次,之后不可改变,
b = c; // error
; - 引用不能为空
- 这里需要注意:实际使用中该标准可能并不被遵循。如果可能存在空对象时,请使用指针。
sizeof
的不同sizeof(pointer)
计算的时指针自身对象的大小;sizeof(reference)
计算的时引用的对象的大小;
++, --
意义不一样;- 引用是类型安全的;
const reference
只能是const object