LoginSignup
0
0

More than 1 year has passed since last update.

ポインタ等の理解

Posted at

C++において ポインタの記法 *&で混乱してしまいます。
混乱したときは、以下のコードをデバッガで追い、アドレス、値の変化を追うことで混乱から抜けだします:sweat_smile:


#include <iostream>

int main()
{
   //デバッガの内容
   //int_num2     未初期化
   //int_num3     未初期化
   //p_int_num1;  未初期化
   //p_int_num2;  未初期化
   //p_int_num3;  未初期化

    int int_num1 = 10;          //実体の定義
    int int_num2 = 20;          //実体の定義
    int int_num3 = 30;          //実体の定義
    int* p_int_num1;            //ポインタの定義
    int* p_int_num2;            //ポインタの定義
    int* p_int_num3;            //ポインタの定義

   //デバッガの内容
   //int_num1     10
   //int_num2     20
   //int_num3     30
   //p_int_num1;  未初期化
   //p_int_num2;  未初期化
   //p_int_num3;  未初期化

    p_int_num1 = &int_num1;     //&実体で ポインタ「p_int_num1」に実体「int_num1」のポインタを代入する。
    p_int_num2 = &int_num2;     //&実体で ポインタ「p_int_num2」に実体「int_num2」のポインタを代入する。
    p_int_num3 = &int_num3;     //&実体で ポインタ「p_int_num3」に実体「int_num3」のポインタを代入する。

   //デバッガの内容
   //int_num1     10
   //int_num2     20
   //int_num3     30
   //p_int_num1;  0xfb00{10}
   //p_int_num2;  0xfaf4{20}
   //p_int_num3;  0xfae8{30}

    p_int_num2 = p_int_num1;    //ポインタ「p_int_num2」にポインタ「p_int_num1」を代入する。
    *p_int_num2 = 21;           //*ポインタ(左辺)で ポインタ「p_int_num2」の示す実体に実体「21」を代入する。
   //デバッガの内容
   //int_num1     21
   //int_num2     20
   //int_num3     30
   //p_int_num1;  0xfb00{21}
   //p_int_num2;  0xfb00{21}
   //p_int_num3;  0xfae8{30}

    *p_int_num2 = int_num3;     //*ポインタ(左辺)で ポインタ「p_int_num2」の示す実体に実体「int_num2」を代入する。
    int_num2 = *p_int_num3;     //*ポインタ(右辺)で 実体「int_num2」にポインタ「p_int_num2」の示す実体を代入する。

   //デバッガの内容
   //int_num1     30
   //int_num2     30
   //int_num3     30
   //p_int_num1;  0xfb00{21}
   //p_int_num2;  0xfb00{21}
   //p_int_num3;  0xfae8{30}
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0