C/C++ ポインタ入門 > ポインタへのポインタ
Nobuhide Tsuda
Oct-2013
ポインタへのポインタ
- 初級者がよく混乱する話題として「ポインタへのポインタ」がある
- ポインタも変数だから、そのアドレスを保持するものを用意し、ポインタを間接的に操作することができる
- それが「ポインタへのポインタ」だ
- 「T *ptr;」の時、「T **pp = &ptr;」の様に宣言する
- ここで戸惑う初級者が多いようだ
- &ptr の様に、右辺値で & を付けるとアドレスになるから * が一個増えるんだぞ
- 図示すると以下のようになるぞ
- ずっと前に、データが平社員ならポインタは複数の平社員を管理する課長だという話をしたが、
ポインタのポインタは部長に対応するぞ。複数の課長を管理できるんだぞ。
- ポインタへのポインタの簡単な使用例:
char v[10] = {0}; // 配列を作り、0 で初期化
char *ptr = &v[0]; // ptr に v[0] のアドレスを代入
char **pp = &ptr; // ポインタのポインタを宣言し、&ptr で初期化
*pp = &v[1]; // pp の指す先(=ptr)に v[1] のアドレスを代入
*ptr = 12; // ptr は &v[1] に変わっているので、v[1] の内容が12に変わる
演習問題:
- 上記プログラム末尾に v を表示するコードを追加し、ビルド・実行しなさい
ポインタのポインタの具体的な応用例を知りたい場合は、単方向リンク を読んでね。
前:ポインタと構造体・クラス
|上:C/C++ ポインタ入門
|次: