C ++で参照による呼び出しを実装する方法



この記事では、実装を使用したC ++での参照による呼び出しと、それが値による呼び出しとどのように異なるかについての詳細な知識を提供します。

C ++のバックグラウンドがすでにある場合、C ++での作業は難しい作業ではありません。どちらも、互いに多くの概念を共有しているからです。ただし、C ++には、Cパラダイムの一部ではないいくつかの概念があります。このC ++での参照による呼び出しの記事では、参照変数とそのアプリケーションであるそのような概念の1つについて次の順序で説明します。

参照変数

C ++は、新しいタイプの変数、つまり参照変数を提供します。参照変数は、元の変数のニックネームと考えることができます。これが、1行の参照変数の正確な機能です。





たとえば、あなたの名前がハリソンであるが自宅にいる場合、家族はあなたをハリーと呼びます。次に、参照変数の詳細をいくつか見ていきましょう。このタイプの変数の宣言と使用は、私たちが使用する通常の変数とは異なりますが、ポインター変数と非常によく似ています。

フィボナッチコードc ++

構文:



int Hello = 1 int * ptr int&World = Hello

値「1」を含む変数「Hello」を作成すると、メモリのセグメントを使用して値「1」が痛められます。このセグメントの名前は「Hello」になり、このセグメントのアドレスはたとえば16進値になります。0x64。私たちが書くときint&World =こんにちは同じメモリ位置を指す「ワールド」変数が作成されます。

World ++の行を含めると、アドレス0x64が変更されます。これは、変数「Hello」の値も変更されることを意味します。一部の人はどうですか この投稿の後半で説明するポインター変数とは異なる参照変数。

C ++での値による呼び出しと参照による呼び出し

値による呼び出し: Call by Valueは、広く使用されている方法です。変数の元の値を変更したくないため、ほとんどの場合、値による呼び出しアプローチを使用します。したがって、call by valueメソッドを使用して関数を呼び出し、変数の値のみが渡されます。これは、メモリにダミー変数を作成することで実現されます。



#include using namespace std void add(int a、int b){a = a + 10 b = b + 10 cout<<'Value of a = '<  C ++での値による呼び出し

上の画像から、add()関数を呼び出すとすぐに、x変数とy変数の値が変数aとbにコピーされることがわかります。 Aとbはダミー変数です。

参照による呼び出し: それでは、参照メソッドによる呼び出しについて説明しましょう。このメソッドでは、個別のダミー変数は作成されず、既存の変数の参照がメソッドに渡されます。この参照は同じメモリ位置を指しているため、メモリ内に個別のコピーは作成されません。ここで注意すべき重要な点は、参照変数に加えられた変更がダミー変数に反映されることです。

#include using namespace std void add(int&a、int&b){a = a + 10 b = b + 10 cout<<'Value of a = '< int&min(int&a、int&b){if(a 

戻り値の型が「int&」であるため、上記の関数は通常の関数とは異なって見えることがわかります。この関数は、条件に応じてaまたはbへの参照を返します。ここで注意すべき重要な点は、値が返されません。

関数min(x、y)= 10を呼び出すと、最小の場合はxに、yが最小の場合はyに10が割り当てられます。

参照による呼び出しとポインター

すべての例で、作成した参照変数に常に値を割り当てました。これは、参照変数をNULLにすることはできず、ポインター変数をNULLにすることができ、予期しないエラーが発生する可能性があるためです。

math.absはJavaで何をしますか

参照変数は再割り当てできませんが、ポインター変数はプログラムの後半で他の変数を指すことができます。

ポインタ変数は特定の変数のアドレス値を保持しますが、参照変数のアドレスはそれが参照している変数のアドレスと同じです。

これで、C ++のこのCallByReferenceの記事は終わりです。値と参照による呼び出しのさまざまな実装と、それらの違いについて理解していただければ幸いです。

詳細を知りたい場合は、 信頼できるオンライン学習会社であるEdurekaによる。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークとともに、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。