タグ付けされた質問 「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"; }

7
Javaで整数ラッパーを比較するときに、128 == 128がfalseであるのに、127 == 127がtrueであるのはなぜですか?
class D { public static void main(String args[]) { Integer b2=128; Integer b3=128; System.out.println(b2==b3); } } 出力: false class D { public static void main(String args[]) { Integer b2=127; Integer b3=127; System.out.println(b2==b3); } } 出力: true 注:-128から127までの数値が当てはまります。

15
Javaで参照により文字列を渡しますか?
私は次のことをすることに慣れていますC: void main() { String zText = ""; fillString(zText); printf(zText); } void fillString(String zText) { zText += "foo"; } そして出力は: foo ただし、Javaでは、これは機能しないようです。参照によって渡されるのでStringはなく、オブジェクトがコピーされるためと思います。文字列は常に参照によって渡されるオブジェクトであると思いました。 ここで何が起こっているのですか?

8
Swift:配列を参照で渡しますか?
Swift Array account.chatsをchatsViewController.chats参照渡ししたい(チャットをに追加してもaccount.chats、chatsViewController.chatsまだを指しているaccount.chats)。つまり、長さがaccount.chats変更されたときにSwiftで2つの配列を分離したくありません。

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オブジェクトのコピーを避けるために)関数への参照を渡す方が効率的ではないでしょうか?考えられる悪い副作用は何ですか?私は次の2つのケースを想定しています。 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>by値を渡す正当な理由がわかりません。値による受け渡しは、コピーのために「一時的に」参照カウントをインクリメントし、関数スコープを終了するときにそれをデクリメントします。私は何かを見落としているか? 明確にするために、いくつかの回答を読んだ後、私は時期尚早の最適化の懸念に完全に同意します。私の質問は、純粋に技術的なコードの観点からのものでした。

8
参照渡しのリスト-この動作を説明する
次のプログラムを見てください。 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 リストは確かに「参照渡し」ですが、sort機能のみが有効になります。次のステートメントmyList = myList2;は効果がありません。 …


11
Pythonでの参照による整数の受け渡し
Pythonで参照によって整数を渡すにはどうすればよいですか? 関数に渡す変数の値を変更したい。Pythonのすべてが値渡しであることを読みましたが、簡単なトリックが必要です。たとえば、Javaでは、あなたはの参照型渡すことができInteger、Longなど 参照によって整数を関数に渡すにはどうすればよいですか? ベストプラクティスは何ですか?

6
python pandasデータフレーム、値渡しか参照渡しか
データフレームを関数に渡し、関数内で変更した場合、値渡しですか、それとも参照渡しですか? 次のコードを実行します 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
Java:参照によってintを渡すための最良の方法
バイトバッファからエンコードされた長さを解析する解析関数があり、解析された長さをintとして返し、インデックスを整数argとしてバッファに取り込みます。関数が解析対象に応じてインデックスを更新するようにしたい、つまり、参照によってそのインデックスを渡したい。Cでは、を渡すだけint *です。Javaでこれを行う最もクリーンな方法は何ですか?私は現在、インデックス引数を渡すことを検討しています。としてint[]、しかしそれは少し醜いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.