值传递和引用传递

本文探讨了值传递和引用传递两种求值策略,澄清了常见误解。值传递复制原始值,而引用传递实际上是传递对象的别名。在C++中,引用传递允许直接修改原值,而在Java中,所有传递都是值传递,其引用行为类似C++的指针,但不具备引用传递特性。
摘要由CSDN通过智能技术生成

首先纠正两种错误理解

1.传值就是值传递,传引用类型就是引用传递。
2.所有传递本质都是值传递。

什么是值传递和引用传递?

值传递和引用传递是两种求值策略。求值策略是对调用函数时,求值和传值的方式的描述,而非传递的内容的类型。关于值传递和引用传递的争论,往往集中在传递内容的类型,实际上这不是求值策略所关注的。

求值策略传值方式
值传递值的结果(原值的副本)
引用传递原值(不产生副本)

不管传的是值类型还是引用类型,都是值传递,只不过传值时传递的是原始值的复制,传引用是传的是引用所指地址的复制,java中不存在引用传递。
在c++中存在真正意义上的引用传递:

void ByRef(int& a)

c++的引用跟java的不同,Java的引用跟c++指针类型相似,c++的引用是原值的别名,当c++函数声明为传引用时,传递的是值本身,不产生原值的副本,符合引用传递的定义。java在灵活和简单两者中选择了后者,舍弃了引用传递这种求值策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值