C++的reference(引用)

一个例子

void add(int value)
{
    value++;
}

int main()
{
    int  a = 5;
    LOG(a);
    add(a);
    LOG( a);
}

在这种情况下,变量a在函数内进行自加运算,最后的结果仍然是两个5.
image
因为函数add的value实际上是传值引用,即value只是拷贝了a的数据,并没有影响a。
显而易见的,我们可以更改add函数使其有返回值,使得a等于这个返回值。

int add(int value)
{
return value++;
}
int main
{
int a =5;
a=add(a);
}

更方便的,我们可以使用传址引用,即传递变量的地址,让函数内value直接对地址上的数据操作。

void add(int& value)
{
value++;
}

其余什么都不需要改变
在这里,int& value中value就是a,因为两者地址一致,所指代的都为一个值。
还有别的方法

void add(int* value)
{
(*value)++;
}

在本例中,函数传入a的地址到指针value上,然后指针进行一次逆运算,得到地址的值,再进行自加运算,效果同上。
##总结
实际可以看出,引用其实和指针是一个东西,是指针的语法糖,引用操作模式更加易理解
引用自创建被指向某一变量时就无法再次指向别的变量,我们只能改变他的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值