【发布时间】:2013-04-08 11:06:56
【问题描述】:
我来自 C/C++ 世界。我注意到在许多帖子中人们不接受说在 Java 中有“通过引用传递”(对于非基元);他们的论点是,在这种情况下,引用了一份参考资料。我无法理解这个理由,因为当我们通过引用传递时,这实际上是 C 中发生的事情(获取了指针的副本)。对于我对Java的一点了解,我会说:
- 原始类型按值传递。
- 非原始类型通过引用传递。
我错了吗?
【问题讨论】:
-
据我了解,与 C 或 C++ 程序员交谈时,我会说对象指针是按值传递的,因此在函数中您可以修改原始对象,但不能覆盖原始引用给它。但我对 Java 的了解几乎为 0。
-
严格意义上来说,C 也没有按引用传递。 它像 Java 一样具有“按指针传递”。这与 C++ 形成鲜明对比,C++ 具有真正的参考传递。
-
谢谢。你很真实。 C 没有通过引用传递。现在我了解了 Java、C 和 C++ 的区别。
标签: java c++ c parameter-passing