ポインタ型の配列宣言をつかって簡単に複数の変数のアドレスデータをメモリに格納することができます


ソーラー「というわけで


int*型の配列宣言をつかって


複数の変数のアドレスデータをメモリに格納することはできます


ここで


もう1度


その仕組みをみていこうかな



int a = 1;

int b = 2;

int c = 3;


を実行したときの


int型の変数aのアドレス&a

int型の変数bのアドレス&b

int型の変数cのアドレス&c



ブロック{}内に記述した


hairetuのint*型の配列宣言をつかって



int* hairetu[] = { &a,&b,&c };


を実行できることになります


int* hairetu[3] = { &a,&b,&c };


では何が行われているか


その仕組みをじっくり見ていこうかな


まず


int* hairetu[3];


の仕組みからみていきましょう


int* hairetu[3]; は


hairetuのint*型の配列宣言とよばれます


int* hairetu[3];


が実行されると


int*型の配列変数


hairetu[0]

hairetu[1]

hairetu[2]


が生成されます


その仕組みは


char hairetu[3];



hairetuのchar型の配列宣言と呼ばれていて


char hairetu[3];


が実行されると


char型の配列変数


hairetu[0]

hairetu[1]

hairetu[2]


が生成されることと同じです



int hairetu[3];



hairetuのint型の配列宣言と呼ばれていて


int hairetu[3];


が実行されると


int型の配列変数


hairetu[0]

hairetu[1]

hairetu[2]


が生成されます



hairetuのint*型の配列宣言


int* hairetu[3];


が実行されると


int*型の配列変数


hairetu[0]

hairetu[1]

hairetu[2]


が生成されますが


この


hairetu[0]

hairetu[1]

hairetu[2]


int*型(イントアスタリスク型)のポインタ変数となっています


int*型(イントアスタリスク型)のポインタ変数には


int型の変数のアドレスを代入することができますね


ですから


hairetu[0]

hairetu[1]

hairetu[2]

int型の変数aのアドレス&a

int型の変数bのアドレス&b

int型の変数cのアドレス&c

を格納することができます


そして


hairetu[0]

hairetu[1]

hairetu[2]


💖アドレス💖


&a

&b

&c


が代入されたとき


そのアドレスデータをprintf出力表示するには


%p出力変換指定子を用いて


printf("%p\n",hairetu[0]);

printf("%p\n",hairetu[1]);

printf("%p\n",hairetu[2]);


を実行します


そのプログラムはこちらです

👇



#include <stdio.h>

int main(void) {


int a = 1;

int b = 2;

int c = 3;



int* hairetu[3];


hairetu[0]=&a;

hairetu[1]=&b;

hairetu[2]=&c;


printf("%p\n", hairetu[0]);/*ここの部分ですね*/

printf("%p\n", hairetu[1]);/*ここの部分ですね*/

printf("%p\n", hairetu[2]);/*ここの部分ですね*/

return 0;

}


ビルド実行結果


00B0FC9C

00B0FC90

00B0FC84



ソーラー「


int* hairetu[3];


hairetu[0]=&a;

hairetu[1]=&b;

hairetu[2]=&c;



を短くまとめたものが


int* hairetu[3] = { &a,&b,&c };


というわけです


つまり


1つのint*型の配列宣言を使って(int*型のポインタ変数の配列宣言を使って)

複数の

アドレスデータをメモリに格納することができるというわけです」



solarplexuss「なんと


hairetuのint*型の配列宣言


int* hairetu[3]


って


複数のアドレスを格納することができるんだ~ すごいなあ」




  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る