我先说。我知道标题怀疑我在问一个在这里和互联网上多次回答的问题。我确实进行了研究,但我只是找不到令人满意的答案。
我的问题最终归结为这个。为什么 Java 按值调用和 C++ 按引用调用(使用指针时)?
在传递引用时考虑在 Java 中调用方法,在传递指针时考虑在 c++ 中调用。最后,在这两种情况下,我都可以进行调用者可见的更改。同样在这两种情况下,我都将对象的地址传递给函数。实际上,当传递指针时,我也在复制,即在 c++ 中按值进行调用,不是吗?
您可以通过运行以下代码来简单地验证这种情况:
#include <iostream>
void modify (int *i) {
int a = 5;
i = &a;
}
int main () {
int b;
int *i = &b;
std::cout << i << std::endl;
modify(i);
std::cout << i << std::endl;
return 0;
}
这将打印两次相同的地址。
对我来说,仅仅通过引用来证明调用的合理性是不够的,你可以使用它来执行交换功能。我想知道按引用调用的核心是什么。
先感谢您。