传址与传值

简介: 传址与传值

这里将讲述传址与传值的区别,先见下图。
image.png
这是传值的过程,我们明明把a,b作为实参传过去了。可以看到,交换后的a,b并没有达到我们的预期。为什么会这样呢?其实是因为,传值的时候,形参是临时创建的,在执行完swap函数后,他们又自动销毁了,从而导致a,b的值并没有交换。如果想要改变实参的值,我们就需要进行传址,而不是传值。见下图
image.png
我们通过把a和b的地址传给了形参,形参就能通过地址,找到a,b,以此来改变a和b的值。此时我们的实参就改为&a和&b,注意swap函数的形参类型是int*,这样就能交换a与b的值啦。

总结:传值:形参是实参的一份拷贝,函数运行起来后,实参是实参,形参和实参没有任何关联,改变形参时,不会对实参造成影响。

       传址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此,对形参解引用后的内容进行修改,改变的就是实参。
目录
相关文章
|
7月前
|
安全 C++ 开发者
C++一分钟之-函数参数传递:值传递与引用传递
【6月更文挑战第19天】C++中函数参数传递涉及值传递和引用传递。值传递传递实参副本,安全但可能效率低,适合不变对象;引用传递传递实参引用,允许修改,用于高效修改或返回多值。值传递示例显示交换不生效,而引用传递示例实现交换。常量引用则防止意外修改。选择传递方式需考虑效率与安全性。
64 2
|
C++ Python
Python函数参数传递:传值还是传引用
Python函数参数传递:传值还是传引用
65 0
|
8月前
|
C++
C++函数与值传递
C++函数与值传递
39 0
传值调用与传址调用
传值调用与传址调用
76 0
【C#视频】方法重载、函数重载、传值
【C#视频】方法重载、函数重载、传值
函数的传值调用和传址调用
函数的传值调用和传址调用
值传递与引用数据类型传递
值传递与引用数据类型传递
54 0
|
存储
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
124 0
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
|
JavaScript Java PHP
被小看的面试题 - 传值 or 传引用
前几天一个正在找工作的朋友发来一个面试题,感觉挺有意思的今天发出来大家一起乐呵乐呵。
90 0
被小看的面试题 - 传值 or 传引用
|
存储 C语言
指针妙用之将函数中形参的值传递给实参
指针妙用之将函数中形参的值传递给实参