CallByAddressとCallByReferenceの違いは何ですか

目次:

Anonim

NS 主な違い CallByAddressとCallByReferenceの間は アドレスによる呼び出しでは、引数のアドレスは関数の仮パラメーターにコピーされますが、参照による呼び出しでは、引数の参照は関数の仮パラメーターにコピーされます。

一般に、関数は、タスクを複数回実行できるようにする一連のステートメントです。関数は、プログラムをより読みやすくするのに役立ちます。 C ++などのプログラミング言語では、実行はmainメソッドから開始され、mainメソッドから他の関数​​またはメソッドを呼び出すことができます。これらの言語には、関数を呼び出すためのさまざまなメソッドがあります。 C ++のこのような2つのメソッドは、「アドレスによる呼び出し」と「参照による呼び出し」です。

C ++、アドレスによる呼び出し、ポインターによる呼び出し、参照による呼び出し、関数、ポインター、参照

CallByAddressとは

Call By Addressは、Call ByPointersとも呼ばれます。このメソッドでは、プログラマーは実際の引数のアドレスを仮パラメーターに渡します。次に、関数はアドレスを使用して実際の引数にアクセスします。つまり、仮パラメータに加えられた変更は、実際の引数に影響を与えます。ポインタで値を渡すために、引数ポインタは他の値と同様に関数に渡されます。プログラム例は以下のとおりです。

図1:アドレスによる呼び出しを伴うC ++プログラム

メインプログラムには、a 'と' b 'の2つの整数があります。 「a」と「b」のアドレスが関数に渡されます。したがって、関数はこれらのアドレスを取得します。また、一時変数は2つの値を交換するのに役立ちます。次に、関数はアドレスを使用して実際の値を操作します。したがって、関数内で行われた変更がメインプログラムに表示されていることがわかります。最後に、2つの値が入れ替わっていることがわかります。現在、「a」は20、「b」は10です。

参照による呼び出しとは

参照による呼び出しの概念を理解する前に、参照変数の概念を理解することが重要です。以下のコードを想定します。

int a = 10;

int&b = a;

ここで、bは参照変数です。これらの変数は、それ自体のメモリスペースを占有しません。したがって、すでに割り当てられている変数のメモリを共有します。言い換えれば、bはaのメモリを共有します。プログラマーが実際の変数を変更すると、参照変数も変更されます。プログラマーがaを変更すると、それはbに反映され、プログラマーがbを変更すると、aはその新しい値bを使用します。同様に、参照変数はメモリの節約に役立ちます。

参照による呼び出しでは、引数の参照が仮パラメーターにコピーされます。関数内で、プログラマーは参照を使用して実際の引数にアクセスできます。したがって、パラメータに加えられた変更は実際の引数に影響します。さらに、参照によって値を渡すために、引数参照は他の値と同じように関数に渡されます。

図2:参照による呼び出しを伴うC ++プログラム

メインプログラムでは、メインプログラムには「a」と「b」の2つの整数があります。これらの2つの値は、スワップ関数に渡されます。スワップ関数では、pとqは正式なパラメーターです。 &pと&qは、それらが参照変数であることを示します。次に、スワップ関数が値を変更します。最後に、スワップされた値がコンソールに表示されます。

CallByAddressとCallByReferenceの違い

意味

Call By Addressは、実際の引数のアドレスが仮パラメーターにコピーされる関数を呼び出す方法です。ただし、参照による呼び出しは、引数の参照を仮パラメーターにコピーすることにより、関数に引数を渡す方法です。したがって、これがCall ByAddressとCallByReferenceの違いです。

機能性

メモリ割り当て

さらに、アドレスによる呼び出しでは、メモリは実際の引数と仮パラメータの両方に割り当てられますが、参照による呼び出しでは、メモリは実際の引数にのみ割り当てられ、仮パラメータはそのメモリを共有します。

結論

簡単に言うと、Call ByAddressとCallBy Referenceは、関数に値を渡す2つの方法です。 CallByAddressとCallBy Referenceの主な違いは、Call By Addressでは、引数のアドレスが関数の仮パラメーターにコピーされるのに対し、Call By Referenceでは、引数の参照が仮パラメーターにコピーされることです。関数の。

参照:

1.グプタ、サンジェイ。 07 C値による呼び出し、アドレスによる呼び出し、および関数呼び出しの参照メソッドによる呼び出し、YouTube、2017年1月3日、ここで入手可能。 2.Tutorialspoint.com。 「ポインタによるC関数呼び出し。」 Www.tutorialspoint.com、ここから入手できます。 3.Tutorialspoint.com。 「参照によるC関数呼び出し」。 Www.tutorialspoint.com、ここから入手できます。

CallByAddressとCallByReferenceの違いは何ですか