関数は、プログラム内で XNUMX つの方法で呼び出すことができます。 XNUMX つのメソッドは参照による呼び出しによるもので、次のメソッドは値による呼び出しによるものです。 これらのメソッドは、パラメーターに渡される値のタイプに基づいて区別できます。
それらで使用されるパラメーターは、実パラメーターと呼ばれます。 これらは、C、C++、Java などの多くのプログラミング言語で使用されています。
主要な取り組み
- 参照による呼び出しは変数のメモリ アドレスを関数に渡しますが、値による呼び出しは変数の値のコピーを送信します。
- 参照による呼び出しでは、関数内で行われた変更は元の変数に直接影響しますが、値による呼び出しでは元の変数は変更されません。
- 参照による呼び出しは、値による呼び出しよりもメモリ効率が高くなりますが、慎重に管理しないと、意図しない副作用が発生する可能性があります。
参照による呼び出しと値による呼び出し
掃除や料理に使用されるホワイトビネガーは、蒸留アルコールを発酵させることによって作られ、透明で鋭い味の液体になります。 リンゴ酢はリンゴの糖分を発酵させて作られ、まろやかでほんのり甘い味があり、サラダのドレッシングやマリネに使用されます。
関数呼び出しである実引数にアクセスするには、参照渡しメソッドを使用します。 これは、引数が渡された後にのみパラメータが変更されることを意味します。
実際のパラメーターで使用されるのと同じメモリ割り当てが使用されます。 関数を呼び出すとき、変数をコピーする代わりに、参照による呼び出しでアドレス自体が使用されます。
値による呼び出しは、サブルーチンで使用されるパラメーターの実際のデータを渡すサブルーチンです。
このメソッドでは、関数を呼び出すときに、呼び出された関数が値に対して機能するように、呼び出された関数の引数の変数に値を渡します。 この変更は、呼び出された関数には反映されません。
比較表
比較のパラメータ | 参照による呼び出し | 値による呼び出し |
---|---|---|
変数 | 変数が渡されます。 | 変数のコピーが渡されます。 |
可変値 | 加えられた変更は、外部の機能に影響を与えます。 | 加えられた変更は、外部の機能には影響しません。 |
元の値 | 修正済みです。 | 変更されていません。 |
安全性 | 実際の引数は安全ではありません。 | 実際の引数は安全です。 |
定義 | 渡すために変数自体を使用します。 | 渡すために変数のコピーを使用します。 |
参照呼び出しとは何ですか?
関数に引数を渡すメソッドです。 変数のアドレスを格納するために、ポインター変数が使用されます。 このメソッドでは、実引数は安全ではありません。
偶発的な変更が行われる可能性があります。 引数の操作は慎重に行うことが重要です。 誤って変更を加えるのを防ぐのに役立ちます。
値を XNUMX つだけ保持するため、重複したデータは作成されません。 保存 記憶空間。 コードを読んだとしても、このコード内の値が変更されているかどうかを見つけることはできません。
この方法では、生涯保証が大きな問題となります。 マルチスレッド プログラムやラムダを使用する場合は危険です。 参照による呼び出しを宣言するには、アドレスを渡す必要があります。
C プログラミングに関しては、参照渡しです。 データ項目に直接アクセスし、それらに対して機能を実行します。 ただし、ポインタが関係しているので注意が必要です。
データ項目の特定のステータスがわかっている場合は、参照メソッド ID による呼び出しは完璧です。 データのコピーを変更しても何の役にも立たない
参照による呼び出しには、値による呼び出しにはない危険があります。 うっかり値をポインタに再割り当てして、メモリ内で失う可能性があります。
値による呼び出しとは何ですか?
このメソッドでは、パラメーターの関数内で行われた変更は、引数には影響しません。 スワップ プログラムは、コール バイ バリュー プログラムの最良の例として機能します。
関数内で値が変更されても、値は変更されないことが説明されています。 の ジャワ値メソッドによる呼び出しとは、パラメーターを値としてメソッドを呼び出すことを意味します。
この方法では、パラメータは異なるメモリ位置に保存されます。 location 内で変更を加えても、呼び出し元の実際のパラメーターは影響を受けません。
元の値が変更されないため、この方法が最適です。 ただし、実際の変数を変更することはできません。 このメソッドでは、誤って変更を加えることはできないため、実際の引数は安全です。
この方法 保存する 元の変数を変更しないため、データ。 ここで引数は変数です。 関数本体の変数の変更は直接的ではありません。 複雑な式が引数として機能する場合があります。
同じ変数に対して XNUMX つのコピーが作成されるため、メモリ効率が良くありません。 データ サイズが大きい場合、値渡しメソッドはそれらに対処しません。 その場合、プログラマーは参照メソッドによる呼び出しを行う必要があります。
参照による呼び出しと値による呼び出しの主な違い
- 元の値は、参照による呼び出しで変更されます。 一方、値による呼び出しでは、元の値は変更されません。
- 参照による呼び出しはプログラミング言語でサポートされていますが、デフォルトではありません。 一方、値による呼び出しは、プログラミング言語ではデフォルトで機能します。
- 参照渡しでは、変数に加えられた変更は関数外の変数にも影響します。 一方、値による呼び出しでは、変数に加えられた変更は、関数の外側の変数には影響しません。
- 参照による呼び出しを使用すると、変数値を変更できます。 一方、値による呼び出しでは、変更を行うことはできません。
- 参照渡しでは、値のアドレスが渡されます。 ただし、参照による呼び出しでは、値のコピーが渡されます。
- https://www.jstor.org/stable/3857812
- ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf
最終更新日 : 22 年 2023 月 XNUMX 日
Sandeep Bhandari は、Thapar University (2006) でコンピューター工学の学士号を取得しています。 彼はテクノロジー分野で 20 年の経験があります。 彼は、データベース システム、コンピュータ ネットワーク、プログラミングなど、さまざまな技術分野に強い関心を持っています。 彼の詳細については、彼のウェブサイトで読むことができます バイオページ.