C++ primer 6.2.2传引用参数

传引用参数
引用的本质就是起别名当对引用绑定的别名操作时,其实操作的是被引用的对象

int i = 0;
int &r = i;
r = 10; //此时 i等于10
void reset(int &i){
 int i = 0;
}
int main(){
int j = 20;
reset(j); //  函数过程为:j = 20, i是j的别名,i = 0 ,那么j的值也变为了0
cout<<"j = "<< j <<endl;
}

使用 引用可以避免多余的拷贝
如果函数无需改变引用形参的值,最好将其声明为常量引用

void reset(const int &i){};

使用引用形参返回额外的信息

6.2.2节练习
练习6.11

void reset(int &i){
 int i = 0;
}

练习6.12
引用方式更易于使用

void exchange(int &a,int &b){
int temp = a;
a = b;
b = temp;
}

练习6.13:
void f(T) 这种是值传递
void f(&T)这种是引用传递
值传递会产生拷贝
引用传递不会
练习6.14:
当传入的实参不能被更改时用值传递
当传入的实参能被更改且要求不产生多余的拷贝时用引用传递
练习6.15:
因为s不应该被这个函数改变。但是occurs的结果必须由函数计算,并保存字符出现的次数然后隐式的返回。
这里使用const引用是可以的,但是直接复制一个char会更节省内存。
s能够在函数中被修改,如果令occurs为常量引用,则不能被修改,所以occurs为0,这样得不到我们想要的结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值