logo

C++ 関数 – 参照渡し

データ (または変数) を引数として関数に送信する方法はいくつかあります。一般的なものの 2 つは、値による受け渡しと参照による受け渡しです。参照渡しにより、関数はコピーを作成せずに変数を変更できます。参照変数を宣言する必要があります。渡された変数とパラメータのメモリ位置は同じです。したがって、パラメーターに対する変更は、その親関数内の変数にも反映されます。この記事では、C++ で参照によって変数を渡す方法について説明することに重点を置いています。

参照渡しとは何ですか?

変数が関数への参照として渡されると、変数のアドレスは関数内のポインター変数に格納されます。したがって、関数内の変数は、渡された変数のエイリアスになります。したがって、関数内の変数に対して実行された操作は、呼び出し元の関数にも反映されます。



  • 変更を反映するこの機能により、関数によって複数の値が返される可能性があります。
  • また、void 関数は技術的には、このメソッドを使用して値を返すことができます。

& (アドレス) 演算子は、関数内で参照渡しによって渡される値を示します。以下は、参照渡しを実装するための C++ プログラムです。

C++








// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }>

>

>

Java チュートリアル
出力

5 4>

説明:

  • まず、関数は戻りデータ型 void で定義され、参照によって値を受け取ります ( & 仮パラメータのアドレス記号)。
  • この関数は、仮パラメータの値を 1 ずつ減らします。
  • その後、main 関数内で、という名前の整数変数が追加されます。 ある 値 5 で初期化されます。
  • 「a」の値がコンソールに表示されます。 f() 関数が呼び出され、変数が引数として渡されます。
  • 関数内では、変数の値が 1 ずつ減ります。
  • 関数から戻ると、変数の値が再び表示されますが、元の値より 1 少ないことがわかります。

したがって、関数への参照によって渡された変数への変更は、呼び出し元の関数に反映されます。

Pass-By-Reference を使用したスワップ関数

swap 関数は、引数として受け取った 2 つの変数の値を交換します。以下は、参照渡しを使用して 2 つの変数の値を交換する C++ プログラムです。

C++

キャット・ティンプの体重はどれくらいですか




// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y '>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping x = %d y = %d '>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping x = %d y = %d '>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }>

>

>

出力:

C++ - 参照渡しを使用したスワップ関数

説明:

  • まず、関数プロトタイプが定義されます (メイン関数の前に関数が定義されている場合はオプション)。
  • main 関数内では、2 つの変数の値がユーザーからの入力として取得されます。
  • スワップ関数を呼び出す前の値がコンソールに表示されます。
  • その後、値は引数として swap 関数に渡されます。
  • swap 関数は参照による呼び出しを利用しており、2 つの変数を交換するためのコードが含まれています。
  • 関数が完了すると、2 つの変数の値が main 関数に表示されます (swap の呼び出し後)。
  • 交換された値が画面に表示されます。

ポインタによる参照渡し

呼び出し関数から変数アドレスを渡し、呼び出される関数内でポインターとして使用することもできます。これにより、関数内の変数値をもう少し明示的に変更できるようになります。

onclick js

以下は、ポインターを使用した参照渡しを実装する C++ プログラムです。

C++




// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }>

>

>

出力

5 4>

説明:

  • まず、関数は戻りデータ型 void で定義され、値をポインターとして受け取ります (* で示されます)。 アスタリスク 仮パラメータに署名します)。
  • この関数は、仮パラメータの値を 1 ずつ減らします。
  • その後、main 関数内で、「a」という名前の整数変数が値 5 で初期化されます。
  • するとこの値が表示されます。関数が呼び出され、変数のアドレスが引数として渡されます。
  • 関数内では、ポインタ変数の値が 1 ずつ減らされます。
  • 関数から戻ると、変数の値が再び表示されますが、元の値より 1 少ないことがわかります。