Questions tagged «pass-by-reference»

通过引用传递是一种参数编组策略,通过该策略,变量在内存中的位置将传递给函数,而不是变量值的副本,尽管函数会出现在源代码中,以接收变量本身而不是指针。


17
在C中通过引用传递
如果C不支持通过引用传递变量,为什么这样做有效? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } 输出: $ gcc -std=c99 test.c $ a.exe i = 21

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"; }


15
在Java中通过引用传递字符串?
我习惯于在中执行以下操作C: void main() { String zText = ""; fillString(zText); printf(zText); } void fillString(String zText) { zText += "foo"; } 输出为: foo 但是,在Java中,这似乎不起作用。我认为是因为该String对象是复制的,而不是通过referenced传递的。我以为字符串是对象,总是通过引用传递。 这里发生了什么?

8
Swift:通过引用传递数组?
我想将Swift传递Array account.chats给chatsViewController.chats引用(这样,当我向添加聊天时account.chats,chatsViewController.chats仍指向account.chats)。即,当account.chats更改长度时,我不希望Swift将两个数组分开。

6
如何对Java中的原语进行等效的按引用传递
此Java代码: public class XYZ { public static void main(){ int toyNumber = 5; XYZ temp = new XYZ(); temp.play(toyNumber); System.out.println("Toy number in main " + toyNumber); } void play(int toyNumber){ System.out.println("Toy number in play " + toyNumber); toyNumber++; System.out.println("Toy number in play after increement " + toyNumber); } } 将输出以下内容: …

17
在C ++中通过引用传递时参数的默认值
当我们通过引用传递参数时,是否可以为函数的参数提供默认值。在C ++中 例如,当我尝试声明如下函数时: virtual const ULONG Write(ULONG &State = 0, bool sequence = true); 当我这样做时会出现错误: 错误C2440:“默认参数”:无法从“ const int”转换为“ unsigned long&”非引用“ const”的引用不能绑定到非左值

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>按值传递而不是按引用传递。传递值只会由于复制而“临时”增加引用计数,然后在退出功能范围时减少引用计数。我在俯视什么吗? 为了澄清,在阅读了几个答案之后:我完全同意过早优化的问题,并且我总是尝试先介绍热点,然后再进行热点工作。如果您知道我的意思,我的问题更多是从纯粹的技术代码角度来看。

8
ref传递的列表-帮助我解释此行为
看一下以下程序: class Test { List<int> myList = new List<int>(); public void TestMethod() { myList.Add(100); myList.Add(50); myList.Add(10); ChangeList(myList); foreach (int i in myList) { Console.WriteLine(i); } } private void ChangeList(List<int> myList) { myList.Sort(); List<int> myList2 = new List<int>(); myList2.Add(3); myList2.Add(4); myList = myList2; } } 我以为myList会过去了ref,输出会 3 4 该列表确实是“由ref传递”的,但是只有该sort功能才能生效。以下语句myList = myList2;无效。 …


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

7
Java:通过引用传递int的最佳方法
我有一个解析函数,该函数解析字节缓冲区中的编码长度,它以int形式返回解析后的长度,并以整数arg形式进入缓冲区。我希望函数根据解析的内容来更新索引,即要通过引用传递该索引。在C语言中,我会通过一个int *。用Java做到这一点最干净的方法是什么?我目前正在查看传递索引arg。作为int[],但有点难看。

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()没有。为什么会这样呢?

7
C ++通过引用传递数组
允许通过引用传递数组吗? void foo(double& *bar) 似乎我的编译器说不。为什么?通过引用传递数组的正确方法是什么?还是可以解决?我有一个数组参数,我的方法应修改该参数,然后再检索。另外,我可以使该数组成为一个类成员,可以很好地工作,但是它对我代码的其他部分有很多缺点(我想避免)。 感谢致敬。

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.