C言語>配列3
今回説明するのは二次元配列です。
配列イメージ
|a[0][0]|a[0][1]|…| |a[1][0]|a[1][1]|…|
使用方法
型名 変数[要素名][要素名] =
{
…,
};
例文
//================================================
//include
//================================================
#include <stdio.h>
//================================================
//define
//================================================
#define MAP_WIDTH 5
#define MAP_HEIGHT 5
//================================================
//enum
//================================================
[[enum]]
{
MAP_FLAT,
MAP_SEA,
MAP_MOUNT,
MAP_FLOW,
MAP_HILL,
};
//================================================
//メイン関数
//================================================
int main(void)
{
int i = 0;
int j = 0;
/*マップデータ*/
int MapData[MAP_HEIGHT][MAP_WIDTH] =
{
0, 1, 2, 3, 4,
1, 2, 3, 4, 0,
2, 3, 4, 0, 1,
3, 4, 0, 1, 2,
4, 0, 1, 2, 3,
};
for(i = 0;i < MAP_HEIGHT;i++)
{
for(j = 0;j < MAP_WIDTH;j++)
{
switch(MapData[i][j])
{
case MAP_FLAT:
{
[[printf]]("平");
break;
}
case MAP_SEA:
{
printf("海");
break;
}
case MAP_MOUNT:
{
printf("山");
break;
}
case MAP_FLOW:
{
printf("川");
break;
}
case MAP_HILL:
{
printf("丘");
break;
}
}
}
printf("\n");
}
return 0;
}
実行結果

解説
int MapData[MAP_HEIGHT][MAP_WIDTH] =
{
0, 1, 2, 3, 4,
1, 2, 3, 4, 0,
2, 3, 4, 0, 1,
3, 4, 0, 1, 2,
4, 0, 1, 2, 3,
};
二次元配列の初期化です。
この場合
この場合
MapData[0][0] = 上1左1の0, MapData[0][1] = 上1左2の1, … MapData[1][0] = 上2左1の1, MapData[1][1] = 上2左2の2, …
という風に対応しています。
switch(MapData[i][j])
{
case MAP_FLAT:
{
printf("平");
break;
}
case MAP_SEA:
{
printf("海");
break;
}
case MAP_MOUNT:
{
printf("山");
break;
}
case MAP_FLOW:
{
printf("川");
break;
}
case MAP_HILL:
{
printf("丘");
break;
}
}
マップデータの数値によって、
表示させる文字を変えています。
MAP_FLAT(0)だったら、"平"という文字を、
MAP_SEA(1)だったら、"海"という文字を
…と言ったように対応しています。
表示させる文字を変えています。
MAP_FLAT(0)だったら、"平"という文字を、
MAP_SEA(1)だったら、"海"という文字を
…と言ったように対応しています。
補足
二次元配列以上もありますが、なるべく使わないように
しましょう。
しましょう。
<C言語に戻る
添付ファイル