Questions tagged «pass-by-value»

传递值是一种“单向传递”,因此不会返回接收函数(或其他实体,如流程等)内部传递的值的修改。


30
JavaScript是按引用传递还是按值传递语言?
基本类型(数字,字符串等)按值传递,但是对象是未知的,因为它们都可以按值传递(如果我们认为保存对象的变量实际上是对该对象的引用) )和按引用传递(当我们认为对象的变量包含对象本身时)。 尽管最后并没有什么大不了,但我想知道呈现通过惯例的参数的正确方法是什么。是否有JavaScript规范的摘录,该摘录定义了与此相关的语义?


12
为什么要在Java的方法参数上使用关键字“ final”?
当在方法参数上使用final关键字时,我无法理解该关键字在哪里真正方便。 如果我们排除使用匿名类,可读性和意图声明,那么对我来说几乎毫无用处。 强制某些数据保持不变并不像看起来那样强大。 如果参数是原始参数,则它将无效,因为参数作为值传递给方法,并且在范围之外进行更改将无效。 如果我们通过引用传递参数,则引用本身就是局部变量,并且如果在方法内部更改了引用,则不会在方法范围之外产生任何影响。 考虑下面的简单测试示例。尽管该方法更改了给定给定值的参考值,但该测试通过了,但没有效果。 public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c)); } private void change(Collection<Integer> c) { c = new ArrayList<Integer>(); } public void nullify(Collection<?> t) { t = null; }



7
如何将对象传递给C ++中的函数?
我是C ++编程的新手,但是我有Java的经验。我需要有关如何将对象传递给C ++函数的指导。 我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对对象的引用的变量。 如果您还可以解释在哪里使用这些选项,那就太好了。

7
在C#中按引用或值传递对象
在C#中,我一直认为非原始变量是通过引用传递的,原始值是通过值传递的。 因此,当将任何非原始对象传递给方法时,对该方法中的对象执行的任何操作都会影响要传递的对象。(C#101的东西) 但是,我注意到当我传递System.Drawing.Image对象时,似乎不是这样吗?如果我将system.drawing.image对象传递给另一个方法,然后将图像加载到该对象上,然后让该方法超出范围并返回到调用方法,则该图像未加载到原始对象上吗? 为什么是这样?


10
C#中引用类型变量的“ ref”用法是什么?
我了解,如果我将值类型(int,struct等)作为参数(没有ref关键字)传递,则该变量的副本将传递给方法,但是如果我使用ref关键字,则会传递对该变量的引用,不是新的。 但是对于引用类型(如类),即使没有ref关键字,引用也会传递给方法,而不是副本。那么ref关键字与引用类型的用法是什么? 举个例子: var x = new Foo(); 以下内容有什么区别? void Bar(Foo y) { y.Name = "2"; } 和 void Bar(ref Foo y) { y.Name = "2"; }


17
C ++-传递对std :: shared_ptr或boost :: shared_ptr的引用
如果我有一个需要使用的函数shared_ptr,将其传递给它引用不是更有效(这样可以避免复制shared_ptr对象)?可能的不良副作用是什么?我设想了两种可能的情况: 1)在函数内部复制参数,例如 ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount ... } 2)在函数内部仅使用参数,例如 Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { ... sp->do_something(); ... } 在两种情况下,我都看不出有理由boost::shared_ptr<foo>按值传递而不是按引用传递。传递值只会由于复制而“临时”增加引用计数,然后在退出功能范围时减少引用计数。我在俯视什么吗? 为了澄清,在阅读了几个答案之后:我完全同意过早优化的问题,并且我总是尝试先介绍热点,然后再进行热点工作。如果您知道我的意思,我的问题更多是从纯粹的技术代码角度来看。


11
在Python中通过引用传递整数
如何在Python中通过引用传递整数? 我想修改传递给函数的变量的值。我读过Python中的所有内容都是按值传递的,但是必须有一个简单的技巧。例如,在Java中,你可以通过引用类型的Integer,Long等等。 如何通过引用将整数传递给函数? 最佳做法是什么?

6
python pandas dataframe,是按值传递还是按引用传递
如果我将数据帧传递给函数并在函数内部对其进行修改,那么它是按值传递还是按引用传递? 我运行以下代码 a = pd.DataFrame({'a':[1,2], 'b':[3,4]}) def letgo(df): df = df.drop('b',axis=1) letgo(a) a函数调用后,的值不变。这是否意味着价值传递? 我也尝试了以下 xx = np.array([[1,2], [3,4]]) def letgo2(x): x[1,1] = 100 def letgo3(x): x = np.array([[3,3],[3,3]]) 事实证明letgo2(),变化xx并letgo3()没有。为什么会这样呢?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.