指针与引用

本文详细解析C++中引用与指针的区别,包括它们的使用方式、注意事项以及如何正确地在代码中应用。通过具体代码示例,帮助读者深入理解这两种概念之间的关键差异。
====================================================================
1、有空指针,但没有“空引用”
2、有指针的指针,但没有引用的引用
3、有函数指针,但没有函数的引用
4、有指针数组,但没有引用的数组
5、指针有 void * 类型,引用就傻眼了。
====================================================================
下面是可以用引用,但不能用指针的:
1、const 引用可以绑定到右值(rvalue),而指针必须指向一个地址。
example:
1.1)const int &r = 0; // 初始化为常量
1.2)c++ 类中常用的,用 const 引用引用到临时对象
====================================================================
再说一个 const 引用跟 const 指针行为不同的:
绑定到不同类型时,const 引用会绑定到临时变量上,而对指针则不是:
上代码:

  5 int main()
  6 {
  7     float f = 0.0;
  8     const int *p = (const int *)&f;  // 不同类型的指针绑定
  9     const int &r = f;                // 不同类型的引用绑定
 10     cout << (int)f << " " << *p << " " << r << endl;
 11     f = 1.0;
 12     cout << (int)f << " " << *p << " " << r << endl;
 13 }

改变了 f 的值之后,*p 的值改变了,而 r 的值还是 0.
因为在 r 实际上绑定到了一个值为 0 的 int 类型的 tmp 对象上去了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值