C++の参照(Reference)とは?ポインタとの違いもわかりやすく解説!
C++には「参照(Reference)」という便利な仕組みがあります。
変数の別名(エイリアス)を作るもので、実体のある変数を間接的に操作できるようになります。
この記事では、参照の基本的な使い方、関数での利用方法、ポインタとの違いについて初心者向けに解説します。
参照とは?
参照とは、既存の変数を別の名前で扱えるようにする仕組みです。
C++では &
を使って参照を宣言します。
参照の基本構文と例
int a = 10;
int& ref = a; // aの参照をrefとして定義
ref = 20; // aの値も20に変わる
cout << a << endl; // → 20
cout << ref << endl; // → 20
このように、参照を通じて元の変数を操作することができます。
参照を関数の引数に使う
参照を使うことで、関数内で元の変数を直接変更することができます。
これは「値渡し」と対になる「参照渡し」と呼ばれます。
void addTen(int& x) {
x += 10;
}
int main() {
int num = 5;
addTen(num);
cout << num << endl; // → 15
}
このように、関数の引数に &
を付けることで、呼び出し元の変数に直接変更を加えられます。
const参照
変更を加えたくない場合は const
を付けて、読み取り専用の参照にできます。
void show(const int& x) {
cout << x << endl;
}
主に、値をコピーせずに読み取る目的で使用します(特に大きなオブジェクトに便利)。
参照とポインタの違い
項目 | 参照 | ポインタ |
記号 | &(定義時) | *(定義・操作時) |
初期化 | 必ず必要 | 必要ない(nullptr可) |
再代入 | できない(ずっと同じ変数) | 可能(他のアドレスへ切り替え可) |
使いやすさ | 簡単で安全 | 柔軟だがやや複雑 |
参照のメリット
- 値をコピーせずに関数に渡せる
処理が高速で効率的。
- 関数内から元の変数を操作できる
戻り値で受け取る必要がない。
- コードが読みやすい
ポインタよりも直感的。
注意点
- 参照は nullptr をとることができません(初期化必須)。
- 参照の再代入はできないため、動的に変化するものには不向きです。
まとめ
C++の参照(Reference)は、変数の別名を作り、値をコピーせずに効率よく扱うための仕組みです。
関数に引数として渡したり、戻り値に使ったりすることで、より柔軟で高速なプログラムが書けます。
まずは関数での参照渡しや、基本的な操作に慣れて、徐々にポインタとの使い分けもマスターしていきましょう!