問題タブ [call-by-value]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
programming-languages - 名前/参照/値による呼び出し
誰かが名前、参照、および値で呼び出しを詳細に説明し、それらを相互に比較できますか?
簡単な例も素晴らしいでしょう。私は本当に名前による呼び出しに集中しています。参照による呼び出しに非常に似ているように感じます。
java - Call-By-Value と Call-By-Reference の再検討
最初に言わせてください。タイトルが、ここやインターネットで何度も回答された質問をしている疑いがあることを知っています. 私は確かに調査を行いましたが、満足のいく答えを見つけることができません。
私の質問は最後にこれに帰着します。Java Call By Value と C++ Call By Reference (ポインターを使用する場合) はなぜですか?
参照を渡す場合は Java で、ポインタを渡す場合は C++ でメソッド呼び出しを検討してください。結局、どちらの場合も、呼び出し元に表示される変更を加えることができます。また、どちらの場合も、オブジェクトのアドレスを関数に渡しています。実際、私はコピーしています。つまり、ポインターを渡すときにC ++でも値による呼び出しを行っていますよね?
次のコードを実行することで、その状況を簡単に確認できます。
同じ住所を2回印刷します。
私にとっては、スワップ関数を実行できるプロパティを使用して参照による呼び出しを正当化するだけでは十分ではありません。参照ごとに呼び出しを行うものの核心を知りたいです。
前もって感謝します。
c++ - C++で処理される関数に文字列リテラルを渡す方法は?
次のコードを検討してください。
ここで、次の 2 つのケースを考えてみましょう。
1) 関数passStringObject()
が呼び出されます。
2) 関数passStringLiteral()
が呼び出されます。
ケース1では、関数を呼び出すときconsumeString
にpassStringObject
変数stringObject
が関数に渡され、consumeString
(値による呼び出しのため)文字列クラスのコピーコンストラクタが呼び出され、パラメータstrがコピーになると仮定しますstringObject
関数に渡された変数consumeString
。
しかし、関数consumeString
が呼び出されたときにケース 2 では何が起こるでしょうか? 文字列クラスの(オーバーロードされた)代入演算子(バックグラウンドでリテラルを「隠し」変数に割り当てる可能性がありますか?)は、コピーコンストラクターを呼び出して「隠し」変数の値をパラメーターにコピーする前に暗黙的に呼び出されますstr
か?
java - 値による Java 呼び出し
これはよくある質問だと思いますが、ここにあります..
Javaがパラメーターの受け渡しなどをどのように処理するかを理解するためにこれを書き込もうとしました..
ここでは、メソッドに渡されたオブジェクト内のプリミティブの値を変更できますが、メソッドに渡されたプリミティブの値を変更することはできません。理由はありますか?
c - マクロ関数が値によって呼び出されないのはなぜですか?
版画:a=4,b=1
出力では、a と b が交換されています。マクロが値によって呼び出されないのはなぜですか? 結果を説明して助けてください。
c - アドレスを渡していますが、C の値渡しのように機能していますか?
こんにちは、Cプログラミング言語の初心者です。最近、値による呼び出しとアドレスによる呼び出しについて読みました。呼び出された関数のアドレス変更による呼び出しでは、呼び出し先が反映されることを学びました。ただし、次のコードはそのようには機能しません。
アドレスを渡すときに、呼び出された関数によって行われた変更が呼び出し元を反映しないのはなぜですか?
perl - perl が call-by-reference の場合、なぜこれが起こるのですか?
サブルーチンを実行するときに perl が call-by-reference を使用することを読みました。このプロパティをチェックするための簡単なコードを作成しましたが、perl が値渡しであるかのように動作します。
これにより、次の出力が生成されます。
引数が参照渡しの方法で処理された場合、x は x1 と等しく、y は y1 と等しくなるべきではありませんか?
java - Javaでオブジェクトを作成すると、jvmで正確に何が起こりますか?
私が書いているかどうかの私の理解に
このステートメントはa3
、JVM ヒープ内のすべてのプロパティを使用して、jvm スタック内で名前が付けられたハンドルを作成します。これが正しければ、値による呼び出しがどのように機能するのか疑問に思っています。だから、私がメソッドcheckMethod(Car c)
を作成し、checkMethod(a3);
私たちの車が
にcheckMethod
アクセスしようとするusing a3.a = 5;
ので、その値を変更するa3.a
と、呼び出し元のクラスに表示され、jvm がヒープに作成した同じフィールドを指していました。
しかし、呼び出し元のメソッドで実行a3= null;
し、呼び出し元のメソッドに戻って
checkMethod(a3)
このオブジェクトを表示しようとすると、null ではありませんか? オブジェクトのプロパティと比較して動作が異なるのはなぜですか???