C++指针和引用
引用很接近const指针
引用其实就是变量的别名 他不能脱离变量而存在
声明引用时必须要初始化引用 不能声明空引用
引用变量存放的是被引用对象的地址
引用变量在功能上等于一个常量指针,一旦指向某一个地址单元,就不能指向别处了
指针允许寻址,即&p返回指针p的地址,而引用不允许寻址,&r返回被引用对象的地址,被引用对象直接用r表示
凡是使用了引用变量的代码都可以转化成指针的形式,只是代码会更加繁琐。(由于引用的限制,一些常量指针能做到的事,引用却做不到——数组元素允许是指针常量,却不允许是引用
引用使用时无需解引用(*)但指针需要
sizeof()引用变量得到被引用对象大小,而sizeof()指针只能得到指针变量本身的大小
引用不能为空 指针可以为空
(++)对引用和指针含义不同 对引用是对被引用对象的值++ 对指针是本身的地址++
指针是对象,占据内存;引用不是,不一定占据内存。(引用是否占内存标准中并没有规定,可以视它为指针常量,并且在编译器优化后它不占内存)
对于class T
{
public: int a;
}
在函数里面 void fun(class T& a)传了一个对象a 可以使用.(成员运算符)来访问对象里的成员,如a.a; void fun(class T* a)传对象的指针,使用->(间接运算符)来访问对象里的成员a->a;
浙公网安备 33010602011771号