C++ 函数传参里的符号&,const和*&

函数传参的三种类型

1,对象传参
函数声明

void fuc(A a);

调用方法:

A b;
fuc(b); //调用时会先进行将实参的值赋给形参的操作,函数内不会改变实参b的状态

2, 指针传参
函数声明

void fuc(A* a);

调用方法:

A b;
fuc(&b); //调用时也会先进行将实参指针赋给形参指针的操作,但由于传的是地址,形参的*a实际也指向b,因此函数内会改变实参b的状态

3, 引用传参
函数声明:

void fuc(A& a);

&在函数声明中表示引用,其他位置一般表示取地址。
调用方法:

A b;
fuc(b); //直接引用实参,不会生成形参,因此省略了赋值操作这一步。函数会直接对实参进行操作,因此会改变实参的值

补充:const和*&

1,有const修饰时
有时会有 void fuc(const A& a); 这种函数声明的写法,这样的好处是:既不想在函数中变实参,又可以省略形参实参赋值的消耗。

如果一个变量在声明时就被const修饰:
如:
const A b;
这样对于 void fuc(A& a); 的声明,就无法 fuc(b); 调用,因为const要求b无法改变,因此b不能进行引用传参。

2,void fuc( A*& a); 这种声明表示什么?
还是引用传参,只不过实参是个A类型指针:
调用:
A* b;
fuc(b);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值