C++函数传参int a,int *a,int &a,const int &a的区别

C++函数传参int a,int &a,const int &a的区别

#传参方式                 作用
int a值传递无法改变a的值
int *a地址传递传入的是a是一个地址
int &a引用传递传入的是一个指向a的指针,可直接修改a的值
const int &a不改变值的引用传递提高传参效率,同时不允许修改a的值

1. int a 值传递
  • 无法改变原参数的值
  • 纯粹用来传入一个数值而已,计算机内部通过一次复制实现
//这个函数根本无法交换a,b的值
void Swap(int a, int b){
	int tmp = a;
	a = b;
	b = tmp;
}

2. int *a 地址传递
  • 传入的a是一个地址,因此可以修改原参数的值
  • 调用时要写成 f(&a) 的形式
//这个函数可以交换a,b的值
void Swap(int *a, int *b){
	int tmp = *a;
	*a = *b;
	*b = tmp;
}
Swap(&a,&b); //传入地址调用

3. int &a 引用传递
  • 传入函数的实际就是原参数,因此称作“引用传递”
  • 所以当然可以修改原参数的值
//这个函数可以交换a,b的值
void Swap(int &a, int &b){
	int tmp = a;
	a = b;
	b = tmp;
}
Swap(a,b); //直接调用

4. const int &a
  • 高效传递 + 不改变原参
  • 因为 int a 值传递的过程,计算机要做一次数值的复制,当数据特别大时,这必然造成了时间和资源的浪费,因此采用引用传递
  • 引用传递的同时避免对原参数造成修改,因此采用const避免这个问题
  • 40
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值