C++でポインタの参照先を切り替える方法【アドレスの再代入】

目次

概要

C++のポインタは、単に変数のアドレスを保持するだけでなく、途中で別の変数のアドレスに切り替えることも可能です。この性質を利用することで、柔軟かつ効率的なメモリ操作が可能になります。

本記事では、ポインタに別のアドレスを代入することで、参照先を切り替える方法を、シンプルなサンプルコードでわかりやすく解説いたします。

サンプルコード

#include <iostream>
using namespace std;

int main()
{
    int numA = 30;
    int numB = 60;
    int* ptr;

    // numA のアドレスをポインタに代入
    ptr = &numA;
    cout << "変数numAの値は " << numA << " です。" << endl;
    cout << "ptrの値(アドレス)は " << ptr << " です。" << endl;
    cout << "*ptrの参照先の値は " << *ptr << " です。" << endl;

    // 参照先を numB に変更
    ptr = &numB;
    cout << "変数numBの値は " << numB << " です。" << endl;
    cout << "ptrの値(アドレス)は " << ptr << " です。" << endl;
    cout << "*ptrの参照先の値は " << *ptr << " です。" << endl;

    return 0;
}

実行結果のイメージ

変数numAの値は 30 です。
ptrの値(アドレス)は 0x7ffee2f1a4b0 です。
*ptrの参照先の値は 30 です。
変数numBの値は 60 です。
ptrの値(アドレス)は 0x7ffee2f1a4b4 です。
*ptrの参照先の値は 60 です。

※ アドレス値(0x〜)は実行環境によって異なります。

コード解説

  • int* ptr;
    整数型のポインタを宣言します。
  • ptr = &numA;
    numA のアドレスをポインタに代入します。この時点で *ptrnumA を参照しています。
  • ptr = &numB;
    ポインタの参照先を numB に切り替えます。これにより *ptrnumB を参照するようになります。

ポイント

記述意味
&変数名変数のアドレスを取得する
*ポインタ名ポインタが指す変数の値を取得する

応用例

  • 一つのポインタで複数の変数を順に処理する
  • 関数内で処理対象の変数を切り替える
  • 関数に渡す引数を柔軟に変更する

注意点

  • ポインタが指すアドレスを変更すると、それまでの参照先には影響を与えません
  • 参照先を明示的に切り替えるため、意図しない書き換えを避けるには慎重な管理が必要です。
  • メモリ解放(delete)後のポインタ再利用は未定義動作になるため、使い終わったら nullptr を代入するなどの対策が必要です(本記事の範囲では使用しません)。

まとめ

本記事では、C++においてポインタに別の変数のアドレスを代入する方法をご紹介いたしました。

操作内容記述例
ポインタの初期化ptr = &numA;
参照先の切り替えptr = &numB;
参照先の値を取得(間接参照)*ptr

ポインタは「アドレスを動的に切り替える」ことが可能なため、関数設計やデータ操作を柔軟に行いたい場面で非常に役立ちます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次