●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

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可)
再代入できない(ずっと同じ変数)可能(他のアドレスへ切り替え可)
使いやすさ簡単で安全柔軟だがやや複雑

参照のメリット

  1. 値をコピーせずに関数に渡せる
    処理が高速で効率的。
  2. 関数内から元の変数を操作できる
    戻り値で受け取る必要がない。
  3. コードが読みやすい
    ポインタよりも直感的。

注意点

  • 参照は nullptr をとることができません(初期化必須)。
  • 参照の再代入はできないため、動的に変化するものには不向きです。

まとめ

C++の参照(Reference)は、変数の別名を作り、値をコピーせずに効率よく扱うための仕組みです。 関数に引数として渡したり、戻り値に使ったりすることで、より柔軟で高速なプログラムが書けます。

まずは関数での参照渡しや、基本的な操作に慣れて、徐々にポインタとの使い分けもマスターしていきましょう!

 

C++関連用語集

−−−−−  C++  −−−−−

C++のクラス(Class)とは?仕組みと使い方をわかりやすく解説!

C++のオブジェクト(Object)とは?クラスとの関係と役割をわかりやすく解説!

C++のコンストラクタ(Constructor)とは?役割と使い方をやさしく解説!

C++のデストラクタ(Destructor)とは?役割と使い方をやさしく解説!

C++の継承(Inheritance)とは?クラスを拡張する基本テクニック

C++の多態性/ポリモーフィズム(Polymorphism)とは?オブジェクト指向の真髄を解説!

C++のオーバーロード(Overload)とは?関数や演算子を便利に使い分けよう!

C++のオーバーライド(Override)とは?継承と仮想関数の正しい使い方

C++の仮想関数(Virtual Function)とは?ポリモーフィズムを実現する仕組みを解説!

C++の純粋仮想関数(Pure Virtual Function)とは?抽象クラスとの関係も解説!

C++の抽象クラス(Abstract Class)とは?使い方と役割をわかりやすく解説!

C++のテンプレート(Template)とは?型に依存しない汎用的な関数・クラスを作ろう!

C++の名前空間(Namespace)とは?名前の衝突を防ぐ便利な機能

C++の標準テンプレートライブラリ(STL)とは?効率的な開発に必須のライブラリ群

C++のベクター(vector)とは?配列より便利なSTLコンテナを使いこなそう!

C++のイテレータ(Iterator)とは?STLコンテナを自在に操作する鍵

C++の参照(Reference)とは?ポインタとの違いもわかりやすく解説!

C++のポインタ(Pointer)とは?メモリを操る強力な機能をやさしく解説!

C++の動的メモリ確保(Dynamic Memory Allocation)とは?newとdeleteを使いこなそう

C++のnew/delete演算子とは?動的メモリ確保の基本をマスターしよう!

C++の例外処理(Exception Handling)とは?try/catch/throwでエラーに強いプログラムを作ろう

C++のtry/catch構文とは?例外処理の基本をやさしく解説!

C++のRAIIとは?リソース管理を自動化する重要な設計原則

C++の静的変数(static variable)とは?使い方・特徴・注意点をやさしく解説!

C++の関数ポインタ(Function Pointer)とは?使い方と活用例をわかりやすく解説!

C++のラムダ式(Lambda Expression)とは?書き方・使い方をやさしく解説!

C++のスマートポインタ(Smart Pointer)とは?自動で安全なメモリ管理を実現しよう!

C++のコンパイル(Compile)とは?仕組みと流れをわかりやすく解説!

C++のリンク(Link)とは?コンパイルとの違いとエラー対策を解説!

C++のプリプロセッサディレクティブとは?#include や #define の意味と使い方