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