<目次>
(1) C++で変数にアスタリスク(*)が2つ付いている意味について
(1-1) 変数にアスタリスク(*)が2つ付いている意味
(1-2) 構文
(1-3) サンプルプログラム
(1-4) 補足:「int **ptr = new int*;」(左辺*2つ&右辺*1つ)について
(1) C++で変数にアスタリスク(*)が2つ付いている意味について
本記事では次のように変数の前にアスタリスクが(*)が2つ付いている意味についてご紹介します。
(例)
int **fruit_ptr;
(1-1) 変数にアスタリスク(*)が2つ付いている意味
//# ポインタ int *fruit_ptr1;
(1-2) 構文
//# 二重ポインタの定義(int型の例) int **変数名; //# 二重ポインタの値の書き換え **変数名 = 値;
(1-3) サンプルプログラム
#include <iostream> using namespace std; int main(void){ //# 変数 string fruit = "Apple"; cout << "変数の値:" << fruit << endl; //# ポインタ //# ⇒変数fruitのアドレス(&fruit)をポインタに格納 //# ⇒「fruit」と同じ値になる想定 string *fruit_ptr1 = &fruit; cout << "ポインタ(1重)の値 :" << *fruit_ptr1 << endl; //# 二重ポインタ //# ⇒ポインタ*fruit_ptr1のアドレス(&*fruit_ptr1)をポインタに格納 //# ⇒「*fruit_ptr1」と同じ値になる想定 string *fruit_ptr2 = &*fruit_ptr1; cout << "ポインタ(2重)の値(変更前):" << *fruit_ptr2 << endl; //# 値の書き換え //# ⇒値を書き換える時は「*fruit_ptr2」に値を直接代入 *fruit_ptr2 = "Hello Rainbow"; //# 値が更新されている事の確認 cout << "ポインタ(2重)の値(変更後):" << *fruit_ptr2 << endl; //# 参照元の値が更新されているため「*fruit_ptr1」の値も変化 cout << "ポインタ(1重)の値(変更後):" << *fruit_ptr1 << endl; //# 参照元の値が更新されているため「fruit」の値も変化 cout << "変数の値(変更後):" << fruit << endl; }
(1-4) 補足:「int **ptr = new int*;」(左辺*2つ&右辺*1つ)について
⇒★cpp_ int**=new int*で掲載予定