传入值参数和传入引用的参数的区别、什么时候要为传入引用参数加上const

1. 传值

  • 是把实参的值赋值给行参 
  • 那么对行参的修改,不会影响实参的值

2. 传引用

  • 真正的以地址的方式传递参数 ,传递以后,行参和实参都是同一个对象,只是他们名字不同而已
  • 对行参的修改将影响实参的值

原理:

       被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。

  • 值传递(pass-by-value)

  • 引用传递(pass-by-reference)

       被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。

 

什么时候要为传入引用参数加上const?

(1)它告诉编译器,这个参数是一个常量,首先你在函数内部不能改变它;

(2)其次,如果在函数内部需要多次引用这个值,CPU不必每次都重新读取,直接使用第一次读取的值(我想应该是存放在寄存器文件中的)。

(3)如果在需要 const 引用时,将形参定 义为普通引用,则会导致const对象和需要类型转换的对象不能调用该函数,会增加函数的局限性

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值