java – 为什么程序员说“按引用传递”实际上是“按值传递引用?
我知道在C& amp;中通过引用传递的整个概念. C,和类似的概念只在
Java中传递值.
但从一个角度看,一切都是通过价值不是吗? 在C中,我们将变量的指针传递给函数.所以我们只是将参考值传递给函数.这就是我们说Java不支持通过引用传递的原因,因为我们只是将引用变量的值传递给函数.所以我们按值传递引用.虽然在C中有一种通过引用传递的方式,因为我们可以传递参数,并且该函数将使用此格式使用相同的内存位置 void swap(int &x,int &y) 但是通过C中的指针引用传递只是按值传递指针. void swap(int* x,int* y) 我知道这个问题可能看起来有点愚蠢,但我觉得整个概念中存在一个巨大的漏洞.那么通过引用调用的实际定义是什么,这只是在另一个上下文中按值调用的pseduo名称? 解决方法
两个要点:
> C中没有参考号召. 按值传递:被调用函数在堆栈中创建一组新变量,并将参数值复制到其中. 通过引用传递:不是将值传递给被调用的函数,而是传递对原始变量的引用/指针.
在传递对原始变量的引用/指针时,事实上对象/地址是按值传递的.因此,您可以说通过引用传递是按值传递引用,但这并不意味着通过引用传递是传递值的伪名称.两者之间的区别在this answer中得到了很好的解释.我正在复制摘录:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在线有一个中央的javadoc仓库吗?
- java – 在ZooKeeper中,我可以在不存在的znode上使用async
- java – 确定最远点远离其他Point
- java – JSTL / JSP EL(表达式语言)在非JSP(独立)上下文中
- net.sf.jsqlparser.statement.select.PlainSelect.getGroup
- Java基础--定时任务Timer
- java – 如何允许用户选择要初始化的类
- 从char [],start,length创建String的有效方法
- java – 当调用静态方法返回相同类型的变量和类型本身的相同
- java – 如何对由“null”和字符串组合的数组进行排序?