変数のアドレスを格納するポインタ変数のアドレスを格納するポインタ変数(ポインタのポインタ)ってなんですか?
ソーラー「
今日は
みなさん おまちかね
変数のアドレスを格納するポインタ変数のアドレスを格納するポインタ変数
(ポインタのポインタ)
について
学んでみたいと思います
アレサ「
変数のアドレスを格納するポインタ変数のアドレスを格納するポインタ変数?
???
ですか?」
ソーラー「
まず
aのchar*(キャラアスタリスク)型のポインタ変数宣言
が用いられたプログラムをご覧ください
👇
#include <stdio.h>
int main() {
char i = 'b';
char *a = &i;
printf("%c\n", *a);
return 0;
}
ビルド実行結果
b
ソーラー「
このプログラムでは
iのchar型の変数宣言
char i = 'b';
の実行により
char型の変数iに文字データ'b'が格納されています
次に
char *a = &i;
の実行により
char*(キャラアスタリスク)型のポインタ変数a
に変数iのアドレス&iが代入されています
ですので
aにアスタリスク演算子*
を作用させた
*a
は
変数iを表すことになります
このように
char*(キャラアスタリスク)型のポインタ変数は
char型の変数のアドレスを格納できるんだったね😊
では
char** a;
って何のことでしょうか?」
アレサ「??
char** a;
ですか?
aにアスタリスク演算子*が2つくっついています
どのような仕組みになっているのですか?」
ソーラー「
char** a;
とは
aのchar**型のポインタ変数宣言
つまり
char型の変数のアドレスを格納するポインタ変数のアドレスを格納するポインタ変数宣言
で
aは
char型の変数のアドレスを格納するポインタ変数のアドレスを格納するポインタ変数
なんです」
アレサ「
aは
char型の変数のアドレスを格納するポインタ変数のアドレスを格納するポインタ変数
・・ですか・・・」
ソーラー「
char*型のポインタ変数宣言を行い
char*型のポインタ変数を作製すると
そのchar*型のポインタ変数には
char型の変数のアドレスを格納することができました
ところで
このchar*型のポインタ変数に
char型の変数のアドレスを格納したとき
char*型のポインタ変数の管理しているメモリに
char型の変数のアドレスが格納されることになります
char型の変数のアドレスを格納している
char*型のポインタ変数の
管理しているメモリにはアドレス番号がついていますね
実は
そのアドレス番号を格納するポインタ変数も
存在しているんです
そのポインタ変数名をaとすると
そのポインタ変数aは
aのchar**型のポインタ変数宣言
char** a;
により生成されます
char型の変数のアドレス
を
格納するポインタ変数のアドレス
を
格納するポインタ変数aが生成されるんだね
この
char型の変数のアドレス
を
格納するポインタ変数のアドレス
を
格納するポインタ変数a
にアスタリスク演算子*を作用させた
*a
は
char型の変数のアドレスを格納するポインタ変数を
表すことになり
char型の変数のアドレスを格納するポインタ変数
*a
にアスタリスク演算子*を作用させた
**a
は
char型の変数をあらわすことになります」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます