3次元配列宣言を行い生成される配列変数を簡単に初期化してみる 


マックス 「くすくすっ」


てんC 「マックスさん 畑仕事順調ですね。」


マックス 「最近 いい天気が続いてぇ~~


はかどる。はかどる。


まあっ 楽しい日々さ」


きれいに耕された土地は目の前にひろびろと広がっている。


てんC「作物が実る姿がうかんでみえます。」


マックス


「そっちも元気に進んでるじゃないか。


今さっきのエピソードは


簡単な2次元配列宣言、初期化方法をおこなっていたじゃないか。


その手順は


int hairetu[2][3]なら

[2]により

{ } { }を2個用意し

[3]で

{ }の中に3個〇を

{〇,〇,〇}

のようにかきこみ


2次元配列の数値のいれもの

{〇,〇,〇},{〇,〇,〇}をつくる


{〇,〇,〇},{〇,〇,〇}を{}でまとめて


簡単に2次元配列宣言を初期化できるいれものの原型


{{〇,〇,〇},{〇,〇,〇}}


ができる


こんな感じかな?(^^)


これを


int hairetu[2][3]にくっつけると


int hairetu[2][3]={{〇,〇,〇},{〇,〇,〇}};


が完成する


どう😊どう😊? あとはこの〇に


int hairetu[2][3]={{1,2,3},{4,5,6}};


のように


数値をかきこめば


簡単な2次元配列宣言、初期化を実行することができる😊


こんな感じかな」


てんCがマックスが実行した方法を確認してみる。


てんC 「はい、そのとおりです。」


マックス「


2次元配列宣言、初期化方法が


このようにおこなわれるならば


これを真似て


3次元配列宣言、初期化もできるんじゃないか?」


てんC「そう・・ですね。」


美しい畑にみとれるてんC。


てんCのシステムがあたりを観測している。


マックス

「int hairetu[2][3][4];


と3次元配列宣言した場合


生成される数値の入れ物である


配列変数は


hairetu[0][0][0]

hairetu[0][0][1]

hairetu[0][0][2]

hairetu[0][0][3]

hairetu[0][1][0]

hairetu[0][1][1]

hairetu[0][1][2]

hairetu[0][1][3]

hairetu[0][2][0]

hairetu[0][2][1]

hairetu[0][2][2]

hairetu[0][2][3]

hairetu[1][0][0]

hairetu[1][0][1]

hairetu[1][0][2]

hairetu[1][0][3]

hairetu[1][1][0]

hairetu[1][1][1]

hairetu[1][1][2]

hairetu[1][1][3]

hairetu[1][2][0]

hairetu[1][2][1]

hairetu[1][2][2]

hairetu[1][2][3]


となる


この数値の入れ物である配列変数に


hairetu[0][0][0]=2;

hairetu[0][0][1]=3;

hairetu[0][0][2]=4;

hairetu[0][0][3]=5;

hairetu[0][1][0]=8;

hairetu[0][1][1]=8;

hairetu[0][1][2]=8;

hairetu[0][1][3]=7;

hairetu[0][2][0]=3;

hairetu[0][2][1]=8;

hairetu[0][2][2]=2;

hairetu[0][2][3]=8;

hairetu[1][0][0]=7;

hairetu[1][0][1]=1;

hairetu[1][0][2]=0;

hairetu[1][0][3]=8;

hairetu[1][1][0]=3;

hairetu[1][1][1]=2;

hairetu[1][1][2]=4;

hairetu[1][1][3]=5;

hairetu[1][2][0]=6;

hairetu[1][2][1]=3;

hairetu[1][2][2]=0;

hairetu[1][2][3]=8;

適当に数値を代入することにより


3次元配列宣言int hairetu[2][3][4]により生成される


3次元配列を初期化するわけだが


手間がかかりすぎるだろう


そこで


できるかどうかはわからないが


今の簡単な2次元配列宣言、初期化方法を応用し


簡単な3次元配列宣言、初期化をおこなうんだ。


へへっどれどれ


int hairetu[2][3][4]なら


2次元配列のときと同じように


まず[2]により

{ } { }を2つ作り

次に

[3]により

{ }のなかに{ }を3つ作る

{{ },{ },{ }},{{ },{ },{ }}



そして

[4]により{ }のなかに数値を格納する場所〇を4つ生成する。

{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}},{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}}


これを{}でまとめれば

{{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}},{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}}}となり


3次元配列の数値を格納するいれものが完成する。


そう、


3次元配列宣言、初期化をおこない


数値を格納するための原型のモデルができあがる


3次元配列宣言


int hairetu[2][3][4];

と組み合わせると


int hairetu[2][3][4]=

{{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}},{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}}};

となる。


てんC「きれいに


3次元配列宣言、初期化するためのシステムができたようですね。」


マックス「だろう。ははははは


この〇に適当に数値を代入し


hairetu [0][1][1](すぐ後で説明するんだぞ)


に格納されている数値をprintf表示するプログラムをつくる。



#include <stdio.h>


int main(void)

{

int hairetu[2][3][4]={{{2,3,4,5},{8,8,8,7},{3,8,2,8}},{{7,1,0,8},{3,2,4,5},{6,3,0,8}}};

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

return 0;

}


マックス「そして、このプログラムを実行するんだ。


プログラムの実行っっ」


てんC「どうなるでしょうか?(^^)」


プログラムの実行結果

8


てんC 「お見事です。 予測どおり


3次元配列宣言、初期化を行うことに成功しています。」


マックス「ここで

先程の


3次元配列宣言

int hairetu[2][3][4];


の数値を格納するいれもの

{{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}},{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}}}を作る手順で


[2]によってつくられた最初の{} ,{}を左から0番目.1番目

その{}の中の

[3]によってつくられた{},{},{}に左から0番目.1番目、2番目

さらにその{}の中の

[4]によってつくられた〇,〇,〇,〇に0番目.1番目、2番目、3番目


と順番を名づけると


hairetu[0][1][1]とは


011


{{{〇,〇,〇,〇},{〇,◎,〇,〇},{〇,〇,〇,〇}},{{〇,〇,〇,〇},{〇,〇,〇,〇},{〇,〇,〇,〇}}}

の◎の位置にあたるわけだ。


この場合、


int hairetu[2][3][4]={{{2,3,4,5},{8,8,8,7},{3,8,2,8}},{{7,1,0,8},{3,2,4,5},{6,3,0,8}}};


が実行されているので


この◎に格納されている数値は8となる。」


てんC「順番を名付けるとき0番目から始めるのも


2次元配列のときと同じですね。」


マックス

ふっふっふっ


ね、どう、どう?いいでしょ、いいでしょ


だからぁぁ


かまって かまって


てんC にゃははははははは」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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