传址与传值

简介: 传址与传值

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

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

       传址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此,对形参解引用后的内容进行修改,改变的就是实参。
目录
相关文章
|
2月前
函数的形参
函数的形参
11 0
|
8月前
|
C++ Python
Python函数参数传递:传值还是传引用
Python函数参数传递:传值还是传引用
40 0
|
5月前
传值调用与传址调用
传值调用与传址调用
46 0
|
10月前
|
C++
函数的传值调用和传址调用
函数的传值调用和传址调用
|
11月前
|
Python
调用函数时,关于传参那些事~
调用函数时,关于传参那些事~
80 0
|
存储
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
99 0
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
|
JavaScript Java PHP
被小看的面试题 - 传值 or 传引用
前几天一个正在找工作的朋友发来一个面试题,感觉挺有意思的今天发出来大家一起乐呵乐呵。
67 0
被小看的面试题 - 传值 or 传引用
|
C语言
传值调用
传值调用
40 0
C | 传值调用&传址调用(进阶版)
调用函数有两种方式,传值调用和传址调用,其中包含很基础很基础的细节,一定要掌握!
96 0
C | 传值调用&传址调用(进阶版)
|
C++
C/C++形参和实参的区别?
C/C++形参和实参的区别?
239 0
C/C++形参和实参的区别?