C++之——参数传递

1、值传递
记得在学习C语言时,遇到过这样的问题
void swap(int a,int b)
{
int t=b;
b=a;
a=t;
}
这个换值函数在主函数调用后总是不起作用,为什么呢?
因为函数进行参数传递时,会将你传的变量拷贝一份,如果把
int main()
{
int x=4;
int y=5;
swap(x,y);
return 0;
}
等价于
int main()
{
int x=4;
int y=5;
int x’=x;
int y’=y;
int t=x’;
x’=y’;
y’=t;
//其实还有x’,y’,t的销毁
return 0;
}
所以传值时对参数的操作与实参无关。(指针当我没说)
2、传址
其实指针也是对象的一种嘛,不过比较特殊。
如果将上述例子改为
void swap(int *pa,int *pb)
{
int t=*pb;
*pb=*pa;
*pa=t;
}
int main()
{
int a;
int b;
swap(&a,&b);
return 0;
}
那么a,b就能交换成功辣。
3、传引用

void swap(int *pa,int *pb)
{
int t=*pb;
*pb=*pa;
*pa=t;
}
改为
void swap(int &a,int &b)
{
int t=b;
b=a;
a=t;
}
这样
int main()
{
int x=4;
int y=5;
// int x’=x;
// int y’=y;
int t=x;
x=y;
y=t;
//只有t的销毁,但t也不用
return 0;
}
发现了吗,传引用变量的创建和销毁最少,在只有几个int 时优势很小,但传自定义类型时(后面会更构造、析构)如果对象特别大,能省去好多开销不是吗?所以在写函数时,如果没特殊需求,尽量使用引用传递。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ㄨㄛˇㄞˋㄋㄧˇ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值