参照による呼び出しと値による呼び出し: 違いと比較

関数は、プログラム内で XNUMX つの方法で呼び出すことができます。 XNUMX つのメソッドは参照による呼び出しによるもので、次のメソッドは値による呼び出しによるものです。 これらのメソッドは、パラメーターに渡される値のタイプに基づいて区別できます。

それらで使用されるパラメーターは、実パラメーターと呼ばれます。 これらは、C、C++、Java などの多くのプログラミング言語で使用されています。

主要な取り組み

  1. 参照による呼び出しは変数のメモリ アドレスを関数に渡しますが、値による呼び出しは変数の値のコピーを送信します。
  2. 参照による呼び出しでは、関数内で行われた変更は元の変数に直接影響しますが、値による呼び出しでは元の変数は変更されません。
  3. 参照による呼び出しは、値による呼び出しよりもメモリ効率が高くなりますが、慎重に管理しないと、意図しない副作用が発生する可能性があります。

参照による呼び出しと値による呼び出し

掃除や料理に使用されるホワイトビネガーは、蒸留アルコールを発酵させることによって作られ、透明で鋭い味の液体になります。 リンゴ酢はリンゴの糖分を発酵させて作られ、まろやかでほんのり甘い味があり、サラダのドレッシングやマリネに使用されます。

参照による呼び出しと値による呼び出し

関数呼び出しである実引数にアクセスするには、参照渡しメソッドを使用します。 これは、引数が渡された後にのみパラメータが変更されることを意味します。

実際のパラメーターで使用されるのと同じメモリ割り当てが使用されます。 関数を呼び出すとき、変数をコピーする代わりに、参照による呼び出しでアドレス自体が使用されます。

値による呼び出しは、サブルーチンで使用されるパラメーターの実際のデータを渡すサブルーチンです。

このメソッドでは、関数を呼び出すときに、呼び出された関数が値に対して機能するように、呼び出された関数の引数の変数に値を渡します。 この変更は、呼び出された関数には反映されません。

比較表

比較のパラメータ参照による呼び出し値による呼び出し
変数変数が渡されます。変数のコピーが渡されます。
可変値加えられた変更は、外部の機能に影響を与えます。加えられた変更は、外部の機能には影響しません。
元の値修正済みです。変更されていません。
安全性実際の引数は安全ではありません。実際の引数は安全です。
定義渡すために変数自体を使用します。渡すために変数のコピーを使用します。

参照呼び出しとは何ですか?

関数に引数を渡すメソッドです。 変数のアドレスを格納するために、ポインター変数が使用されます。 このメソッドでは、実引数は安全ではありません。

また読む:  SQL と PLSQL: 違いと比較

偶発的な変更が行われる可能性があります。 引数の操作は慎重に行うことが重要です。 誤って変更を加えるのを防ぐのに役立ちます。

値を XNUMX つだけ保持するため、重複したデータは作成されません。 保存 記憶空間。 コードを読んだとしても、このコード内の値が変更されているかどうかを見つけることはできません。

この方法では、生涯保証が大きな問題となります。 マルチスレッド プログラムやラムダを使用する場合は危険です。 参照による呼び出しを宣言するには、アドレスを渡す必要があります。

C プログラミングに関しては、参照渡しです。 データ項目に直接アクセスし、それらに対して機能を実行します。 ただし、ポインタが関係しているので注意が必要です。

データ項目の特定のステータスがわかっている場合は、参照メソッド ID による呼び出しは完璧です。 データのコピーを変更しても何の役にも立たない

参照による呼び出しには、値による呼び出しにはない危険があります。 うっかり値をポインタに再割り当てして、メモリ内で失う可能性があります。

値による呼び出しとは何ですか?

このメソッドでは、パラメーターの関数内で行われた変更は、引数には影響しません。 スワップ プログラムは、コール バイ バリュー プログラムの最良の例として機能します。

関数内で値が変更されても、値は変更されないことが説明されています。 の ジャワ値メソッドによる呼び出しとは、パラメーターを値としてメソッドを呼び出すことを意味します。

この方法では、パラメータは異なるメモリ位置に保存されます。 location 内で変更を加えても、呼び出し元の実際のパラメーターは影響を受けません。

元の値が変更されないため、この方法が最適です。 ただし、実際の変数を変更することはできません。 このメソッドでは、誤って変更を加えることはできないため、実際の引数は安全です。 

また読む:  サイバーセキュリティと倫理的ハッキング: 違いと比較

この方法 保存する 元の変数を変更しないため、データ。 ここで引数は変数です。 関数本体の変数の変更は直接的ではありません。 複雑な式が引数として機能する場合があります。

同じ変数に対して XNUMX つのコピーが作成されるため、メモリ効率が良くありません。 データ サイズが大きい場合、値渡しメソッドはそれらに対処しません。 その場合、プログラマーは参照メソッドによる呼び出しを行う必要があります。 

参照による呼び出しと値による呼び出しの主な違い

  1. 元の値は、参照による呼び出しで変更されます。 一方、値による呼び出しでは、元の値は変更されません。
  2. 参照による呼び出しはプログラミング言語でサポートされていますが、デフォルトではありません。 一方、値による呼び出しは、プログラミング言語ではデフォルトで機能します。
  3. 参照渡しでは、変数に加えられた変更は関数外の変数にも影響します。 一方、値による呼び出しでは、変数に加えられた変更は、関数の外側の変数には影響しません。
  4. 参照による呼び出しを使用すると、変数値を変更できます。 一方、値による呼び出しでは、変更を行うことはできません。
  5. 参照渡しでは、値のアドレスが渡されます。 ただし、参照による呼び出しでは、値のコピーが渡されます。 
参考文献
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

最終更新日 : 22 年 2023 月 XNUMX 日

ドット1
XNUMXつのリクエスト?

私はあなたに価値を提供するために、このブログ記事を書くことに多大な努力を払ってきました. ソーシャルメディアや友人/家族と共有することを検討していただければ、私にとって非常に役立ちます. 共有は♥️

コメント

後で読むためにこの記事を保存しますか? 右下のハートをクリックして自分の記事ボックスに保存!