値渡しと参照渡しの違いは何ですか

目次:

Anonim

NS 主な違い 値渡しと参照渡しの間は、 値渡しでは、パラメーター値は別の変数にコピーされますが、参照渡しでは、実際のパラメーターは関数に渡されます。

コンピュータプログラムは、CPUに特定のタスクを実行するように指示する一連の命令です。効率的で効果的なプログラムを作成するためのプログラミングには、さまざまな概念があります。それらの1つは、再利用可能なステートメントのグループである関数です。同じプログラムですべてのステートメントを記述するのではなく、それをいくつかの関数に分割して、メインプログラムで呼び出すことができます。これにより、プログラムがより管理しやすくなり、保守が容易になります。これには、関数を呼び出す2つの方法があります。それらは、値渡しまたは参照渡しを使用することによって行われます。

値渡し、参照渡し

パスバイバリューとは

値渡しでは、関数パラメータの値がメモリの別の場所にコピーされます。関数内の変数にアクセスまたは変更する場合、コピーにのみアクセスします。したがって、元の値に影響はありません。

図1:値渡しのCプログラム

上に示したプログラムでは、変数値は整数5を格納します。findNewValueは関数です。値はその関数に渡されます。関数では、値はnewValueと呼ばれる新しいメモリ位置にコピーされます。次に、関数は整数を返します。そして、この整数はmain関数のnewValue変数に格納されます。最後に、newValueがコンソールに出力されます。

この関数では、新しいメモリ位置にコピーされた値はnewValueと呼ばれます。変更は、元の値ではなく、そのnewValueに対して行われます。このメソッドは、値渡しと呼ばれます。

参照渡しとは

参照渡しでは、メモリアドレスがその関数に渡されます。つまり、関数は実際の変数にアクセスできます。例は次のとおりです。

図2:参照渡しのCプログラム

変数値は整数5を格納します。findNewValueは関数です。メモリ位置「value」のアドレスがその関数に渡されます。したがって、関数はこの値を取得します。 newValueはポインタです。これは、valueと呼ばれる元のメモリ位置を指します。この関数は、newValueが指す元の値に5を追加します。次に、計算された値が返され、newValue変数に格納されます。最後に、newValueがコンソールに出力されます。

この方法では、メモリ位置が関数に渡されます。したがって、元の値に変更が加えられます。したがって、このメソッドは参照渡しと呼ばれます。

値渡しと参照渡しの違い

意味

値渡しとは、関数のパラメーター値を別の変数にコピーするメカニズムを指し、参照渡しとは、実際のパラメーターを関数に渡すメカニズムを指します。したがって、これが値渡しと参照渡しの主な違いです。

変更点

値渡しでは、関数内で行われた変更は元の値に反映されません。一方、参照渡しでは、関数内で行われた変更は元の値に反映されます。したがって、これは値渡しと参照渡しのもう1つの違いです。

実際のパラメータ

機能との関連

値渡しと参照渡しのもう1つの違いは、値渡しでは関数が実際のコンテンツのコピーを取得するのに対し、参照渡しでは関数は元の変数のコンテンツにアクセスすることです。

メモリ要件

さらに、値渡しは参照渡しよりも多くのメモリを必要とします。

時間要件

時間要件は、値渡しと参照渡しのもう1つの違いです。値の受け渡しには値のコピーが含まれるため、より多くの時間が必要ですが、参照による受け渡しには、コピーがないため、より短い時間が必要です。

結論

値渡しと参照渡しの主な違いは、値渡しではパラメーター値が別の変数にコピーされ、参照渡しでは実際のパラメーターが関数に渡されることです。

リファレンス:

1.「Cの関数–Javatpoint」。 Www.javatpoint.com、ここから入手できます。

値渡しと参照渡しの違いは何ですか