值传递和地址传递是函数调用时传递参数的两种方式。值传递只是将变量的内容复制一份,函数进行操作的其实是另一个变量,只是另一个变量的值和传递的变量值是相同的;而地址传递是直接把变量的地址传递给函数,这时函数是直接对原来的变量进行操作的。 值传递时,在子函数中修改形参不会改变主函数中的原参;而地址传递时,由于形参和原参表示同一个内容,在子函数中修改形参也会改变主函数中的原参。 值传递会在栈上创建临时变量,因此函数内用的这个变量和传入的是两个;而引用传递时,栈上没有创建临时变量的过程。
小编还为您整理了以下内容,可能对您也有帮助:
传值和传址的区别
区别:对形参的影响不同
1、在传值中函数参数压栈的是参数的副本,任何的修改是在副本上作用,没有作用在原来的变量上。
2、传址中压栈的是指针变量的副本,当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
函数传参有三种传参方式:传值、传址、传引用。
1、按值传递
(1)形参和实参各占一个的存储空间。
(2)形参的存储空间是函数被调用时才分配的,调用开始,系统为形参开辟一个临时的存储区,然后将各实参传递给形参,这是形参就得到了实参的值。
2、地址传递
地址传递与值传递的不同在于,它把实参的存储地址传送给形参,使得形参指针和实参指针指向同一块地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。
3、引用传递
引用传递是以引用为参数,则既可以使得对形参的任何操作都能改变相应数据,又使函数调用方便。引用传递是在形参调用前加入引用运算符“&”。
引用为实参的别名,和实参是同一个变量,则他们的值也相同,该引用改变则它的实参也改变。
Copyright © 2019- ltkm.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务