C++では、変数の別名として「参照(reference)」を使用することができます。本記事では、参照の基本的な使い方や、参照と変数の関係について、簡単なコード例とともに解説いたします。
目次
サンプルコード:参照の使い方と挙動の確認
以下のコードは、1つの変数を別の名前(参照)で扱い、値の変化やアドレスの関係性を確認するサンプルです。
#include <iostream>
using namespace std;
int main()
{
int mainValue = 5;
int& refValue = mainValue; // mainValueの参照を定義
cout << "元の変数 mainValue の値は " << mainValue << " です。" << endl;
cout << "参照 refValue の値は " << refValue << " です。" << endl;
refValue = 50; // 参照を使って値を変更
cout << "refValue に 50 を代入しました。" << endl;
cout << "参照 refValue の値は " << refValue << " に変更されました。" << endl;
cout << "元の変数 mainValue の値も " << mainValue << " に変更されました。" << endl;
cout << "mainValue のアドレスは " << &mainValue << " です。" << endl;
cout << "refValue のアドレスも " << &refValue << " です。" << endl;
return 0;
}
コードのポイント
1. 参照とは何か?
int& refValue = mainValue;
この文は、「mainValue
という変数を、refValue
という名前でも扱えるようにする」という意味です。実体は1つですが、別名を与えることで、どちらからでも同じメモリ領域にアクセスできるようになります。
2. 値を変更するとどうなるか?
refValue = 50;
この操作によって、実際に変更されるのはmainValue
の値です。参照は単なる別名であるため、元の変数の値に直接作用します。
3. アドレスの確認
cout << &mainValue;
cout << &refValue;
両方とも同じアドレスが表示されます。これは、参照が独自のメモリを持たず、元の変数をそのまま指していることを意味しています。
ポインタとの違いについて
- 参照は初期化時に必ず実体と結びつける必要があります
- 一度結びついたら、別の変数に切り替えることはできません
- 間接演算子(*)やアドレス演算子(&)を使う必要がないため、コードが簡潔です
まとめ
C++における参照は、変数の別名として非常に便利な機能です。ポインタよりも安全で可読性が高いため、関数での引数渡しやオブジェクト操作などで広く活用されています。まずは基本的な仕組みを理解し、適切な場面で活用できるようにしましょう。