問題タブ [pass-by-reference]
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.
php - PHP 変数は値渡しですか、それとも参照渡しですか?
PHP 変数は値または参照によって渡されますか?
java - Javaは「参照渡し」または「値渡し」ですか?
Java はpass-by-reference を使用しているといつも思っていました。
ただし、 Java がpass-by-value を使用していると主張するブログ投稿を見たことがあります。
私は彼らが行っている違いを理解していないと思います。
説明は何ですか?
c++ - 参照によって渡されたパラメーターが関数内で変更されないのはなぜですか?
静的ライブラリにC関数があります。これをAと呼びましょう。次のインターフェイスを使用します。
この関数はyazの値を変更します(これは確かです)。extern "C"を使用して、動的C++ライブラリ内から使用します。
さて、これが私を驚かせるものです:
- yは正しく設定され、zは変更されません。私が正確に意味するのは、両方が666の(ポイントされた)値で初期化された場合、yがポイントした値は呼び出し後に変更されますが、zがポイントした値は変更されません(まだ666)。
- Cバイナリから呼び出されると、この関数はシームレスに機能します(zが指す値が変更されます)。
- 同じプロトタイプを持つ関数を使用してダミーのCライブラリを作成し、それを動的C ++ライブラリ内から使用すると、非常にうまく機能します。同じ変数を再利用してA(..)を呼び出すと、以前と同じ結果が得られます。zは変更されません。
上記の点は、私の変数の宣言が愚かな間違いではないことを示していると思います。
明らかに行き詰まっていて、Cライブラリを変更できません。何が問題になるのか、何か手がかりはありますか?私はC/C ++インターフェースの問題、たとえばchar*の解釈方法について考えていました。
編集:私はついに何が問題だったのかを見つけました。以下の私の答えを参照してください。
ruby - Rubyで「パラメータを参照渡し」しますか?
Ruby では、値型のセマンティクス (Fixnum など) を持つパラメーターを参照渡しすることは可能ですか? C# の ' ref ' キーワードに似たものを探しています。
例:
ところで。私はちょうど使用できることを知っています:
php - PHP (>= 5.0) では、参照渡しは高速ですか?
PHP では、次のように、関数宣言のパラメーターの前にアンパサンドを追加することで、関数パラメーターを参照によって渡すことができます。
現在、これはパフォーマンスを向上させるためではなく、関数が通常はスコープ外の変数を変更できるようにするために設計されていることを認識しています。
代わりに、PHP は Copy On Write を使用して、変更されるまでオブジェクト (および場合によっては配列も) のコピーを回避しているようです。そのため、パラメーターを変更しない関数の場合、参照によって渡した場合と同じ効果が得られます。
ただし、Copy On Write ロジックが参照渡しでショートサーキットされている可能性があるかどうか、およびそれがパフォーマンスに影響を与えるかどうかは疑問でした。
ETA: 確かに、高速ではないと思いますし、これが参考文献の目的ではないことも十分承知しています。だから私自身の推測はかなり良いと思います.ボンネットの下で何が起こっているのかを本当に知っている誰かからの答えを探しているだけです. PHP の開発に 5 年間携わってきましたが、ソースを読むだけでは PHP の内部構造に関する質の高い情報を得るのが難しいといつも感じていました。
.net - C++/CLI で、'out' パラメーターを使用して関数を宣言して呼び出すにはどうすればよいですか?
1 つの文字列を 2 つの文字列に解析する関数があります。C# では、次のように宣言します。
そして、私はそれを次のように呼びます:
現在のプロジェクトは C++/CLI で行う必要があります。私はもう試した
しかし、次のように呼び出すと:
コンパイラ エラーが発生します。次のように呼び出すと、次のようになります。
その後、実行時にエラーが発生します。関数をどのように宣言して呼び出す必要がありますか?
c# - オブジェクトを渡すときに「ref」キーワードを使用するのはなぜですか?
オブジェクトをメソッドに渡す場合、ref キーワードを使用する必要があるのはなぜですか? とにかくこれはデフォルトの動作ではありませんか?
例えば:
出力は、オブジェクトが参照として渡されたことを意味する "Bar" です。
php - PHPの配列内で配列参照を使用するにはどうすればよいですか?
私は次のことができるようにしたい:
よろしく
/R
c++ - C++では、値渡しと定数参照渡しのどちらが良いですか?
C++では、値渡しと定数参照渡しのどちらが良いですか?
私はどちらがより良い習慣なのか疑問に思っています。定数参照による受け渡しは、変数のコピーを作成していないため、プログラムのパフォーマンスが向上するはずです。