我们先来看两段C++代码:
|
|
|
|
请问我想要让两个变量的值交换,我应该使用swap1还是swap2呢?
|
|
经过验证,我们发现使用swap1并不能实现让两个值交换,而swap2能实现,这就引出了我们要讲的值传递和引用传递。
值传递(pass by value):
|
|
- 调用时,把实参的值复制一份给函数参数
x。 - 函数里改的是拷贝出来的副本,不影响原来的变量。
- 就像你复印了一张身份证,然后在复印件上涂改——原件完全没变。
引用传递(pass by reference):
|
|
- 调用时,没有复制,
x就是原变量的另一个名字。 - 函数里对
x的任何操作,直接作用在原来的变量上。 - 就像别人叫你“小明”或“阿明”,不管叫哪个名字,都是你本人,打你一下你真会疼 😅
综上所述:
值传参 → 操作副本,原变量安全;
引用传参 → 直接操作本体,原变量会被改。