可能重复:
What's the difference between passing by reference vs. passing by value?
Java and C++ pass by value and pass by reference
Java是“按值传递”还是“按引用传递”?
那么c ++和c呢? 是c ++和c“通过值传递”还是“通过引用传递”?
“按值传递”或“按推荐传递”有什么区别?
答案 0 :(得分:5)
Java是按值传递的,但您传递的值可能是参考值。
在C ++中,您可以选择是按值传递还是按引用传递。在C中,你总是按值传递,并且没有参考这样的东西;你必须传递一个指针来做类似的事情。
如果您通过值传递,该函数将获取您传递的变量的副本。如果更改副本,原始值保持不变(但是,传递的值本身就是引用,您可以更改引用的对象)。
如果通过引用传递,该函数将获取传递的实际变量。如果函数更改了该变量,则实际上是在更改传递给函数的变量。
答案 1 :(得分:3)
Java是“按值传递”。总是
C ++允许通过引用传递。 C中的所有内容都按值传递。
通过引用函数传递变量时,该函数可以更改调用者中变量的值。当您通过值传递时,该函数将获取变量的副本。
答案 2 :(得分:-4)
Java是基本类型(int,double)的值传递,并通过引用传递给从Object继承的任何类。
但是你喜欢C ++。
传递值会生成参数的副本,因此函数中所做的任何更改只会在该函数内生效。
按引用传递不复制,因此在子函数中对该参数所做的任何更改都将影响该函数之外的值。