通过引用传递并在c ++和java中传递值

时间:2011-06-17 21:15:46

标签: java c++

  

可能重复:
  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“通过值传递”还是“通过引用传递”?

“按值传递”或“按推荐传递”有什么区别?

3 个答案:

答案 0 :(得分:5)

Java是按值传递的,但您传递的值可能是参考值。

在C ++中,您可以选择是按值传递还是按引用传递。在C中,你总是按值传递,并且没有参考这样的东西;你必须传递一个指针来做类似的事情。

如果您通过值传递,该函数将获取您传递的变量的副本。如果更改副本,原始值保持不变(但是,传递的值本身就是引用,您可以更改引用的对象)。

如果通过引用传递,该函数将获取传递的实际变量。如果函数更改了该变量,则实际上是在更改传递给函数的变量。

答案 1 :(得分:3)

Java是“按值传递”。总是

C ++允许通过引用传递。 C中的所有内容都按值传递。

通过引用函数传递变量时,该函数可以更改调用者中变量的值。当您通过值传递时,该函数将获取变量的副本。

答案 2 :(得分:-4)

Java是基本类型(int,double)的值传递,并通过引用传递给从Object继承的任何类。

但是你喜欢C ++。

传递值会生成参数的副本,因此函数中所做的任何更改只会在该函数内生效。

按引用传递不复制,因此在子函数中对该参数所做的任何更改都将影响该函数之外的值。