C++には、関数の引数に参照を使用する「参照渡し(call by reference)」という機能があります。本記事では、参照を使った引数の受け渡しにより、関数内で複数の変数の値を直接変更する方法について解説いたします。
目次
サンプルコード:参照を使った値の交換
以下のコードは、2つの整数の値を入れ替える処理を関数で行う例です。参照を引数として使用しているため、元の変数そのものの値が変更されます。
#include <iostream>
using namespace std;
// 値を入れ替える関数の宣言(参照渡し)
void exchangeValues(int& left, int& right);
int main()
{
int firstNumber = 15;
int secondNumber = 30;
cout << "交換前の値:" << endl;
cout << "firstNumber = " << firstNumber << endl;
cout << "secondNumber = " << secondNumber << endl;
// 関数を呼び出して値を交換
exchangeValues(firstNumber, secondNumber);
cout << "交換後の値:" << endl;
cout << "firstNumber = " << firstNumber << endl;
cout << "secondNumber = " << secondNumber << endl;
return 0;
}
// 関数の定義(参照渡しにより実体が変更される)
void exchangeValues(int& left, int& right)
{
int temp;
temp = left;
left = right;
right = temp;
}
コード解説
1. 参照による引数の受け渡し
void exchangeValues(int& left, int& right)
この宣言によって、left
とright
は実体であるfirstNumber
とsecondNumber
の別名(参照)として扱われます。関数内でleft
やright
の値を変更すると、元の変数の値が直接書き換えられます。
2. 関数の呼び出しと値の変更
exchangeValues(firstNumber, secondNumber);
この一行で、値の交換が実現されます。関数から戻った後も、元の変数の値が更新されている点に注目してください。
値渡しとの違い
- 値渡しでは、関数に渡されるのはコピーされた値です。元の変数には影響しません。
- 参照渡しでは、元の変数と同じメモリアドレスにアクセスするため、関数内での変更が呼び出し元にも反映されます。
まとめ
関数に参照を使って引数を渡すと、元の変数に直接アクセスできるため、処理効率が上がり、値の変更も容易になります。特に、複数の値を同時に更新したい場合や、大きなオブジェクトを効率的に操作したい場合に有効です。C++の参照機能は、安全かつ便利な引数の受け渡し手段として、積極的に活用すべき構文の一つです。