C++中的引用“&”用法

1.首先先前言一下,C++的的符号不是只用一个用法。就不如最常见的<< ,在C语言只有向左偏移。但是C++又加了一个,就是向左载流,即cout << 。所以接下的讲的引用符号也是的,所以不要搞混掉。

1.引用变量

(1).其实就像给一个人起别名一样。和C语言取地址是一样的,但是他省略了解引用。

那一个人只能有一个别名吗?显然不是,

 

其实都可以的,他相当于就是 下图所示的关系,一个空间被多个变量所指向。

2.引用作参数

这是C语言的代码:

这是C++的代码:

 

 这个不仅省略掉了解引用 *, 而且调用函数的时候也不需要取地址了。在大量调用这个变量,而且都要在前面加  *   ,其实是比较烦的一件事。

3.引用作返回值(提高拷贝效率)

1.先说好处,节省了空间和时间。

2.这是没有引用做返回值的,他会开辟一个静态空间,然后再传给ret。说个题外话,在C语言中,即使是右边不加static的局部变量,传给ret的时候,C语言做了个傻瓜式的处理,就是仍然是开辟的一个新的静态空间,这样应该是为了方便才这样处理的吧。因为函数调用结束后,局部的变量会被销毁掉,如果不存储,就不能传给ret了。

 

 但是,作引用返回,就不会这样,会直接传给变量ret,因为他传的就是一个别名了。

为什么会节省空间呢,你就想成他传的是地址,(确实这里C语言中的指针也能做到,这里只是想说明引用有这种用法,并且学了引用之后,就很少有人会用指针了,因为方便啊。)这里我们可以测试一下他的速度。 

 3.如果没有static, 你敢不敢这么干?是不能的!这样可能是很危险的。虽然在vs里面怎么写是对的,但是仅仅是这样写,因为vs在掉用完函数后,只是归还了这个空间的使用权,但是他没有销毁里面的数据,所以短暂是对的。

就比如下面的这传函数,只要有函数在栈上面去覆盖他,那他就是随机值了,在其他编译器下,可能不需要覆盖,就直接是随机值了。

 

 4.引用做返回值(修改返回值和改变返回值)

1.如果你学过C语言的数据结构,在顺序表中(我这里为了方便就弄静态的数组了)。一个C语言,一个C++,你自己看看把,同样的操作,但是差距却很大。有人会说,C语言的指针可以,但是我们的学的还是左边这种C,说明那种指针返回可定过于繁琐,且没必要。

5.语法层面和汇编层面的引用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值