对引用的认识

首先引用本身是占存储空间的,引用存储的就是所引用对象的地址
比如   int   a=5;
int&   b=a;
int&   c=b;
因此 引用 b 和 c 存储的都是变量 a 的地址,但是 通过 &b 或 &c 是无法取到引用 b 和 c 本身的地址的
取到的是变量 a 的地址,这就是为什么说引用比指针更安全!!因为无法取到引用 b 和 c 的地址意味着你就
无法改变引用 b 和 c 存储的内容,也就无法改变它们所引用的对象,这是非常安全的。
有人把引用比成一个指针常量,因为指针常量一旦指向了某个对象,它就不能再指向其它对象了。从这个意义
上说引用的确和指针常量很相似,但是只要涉及到指针就是不安全的。比如
int a  = 6;
int *const p = &a;//这里指针p中存储的就是变量 a 的地址
int **g = (int**)&p;//这里指针 g 中存储的就是指针 p 的地址
*g = 0;  //这里将指针p中内容置零!!!p丢掉了它所指的对象
cout < <*p < <endl;
如果没有 *g = 0 将输出 6 ,但如果有了 *g = 0 就会导致 指针p丢失了它所指的对象!!!! 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值