配列
概要
配列は同じ型の変数を連続的に並べたデータ構造です。
大量の同じデータを扱うときなどに利用されています。
書式
書式例
型 配列名[配列の大きさ(要素の数)];
書式の具体例
int score[30]; // 学生のテストの点数(30人分)
配列には配列の内の変数を識別するために通し番号がつけられています。
上記の具体例でいうとscoreの配列はint型の変数を30個用意していますので
0~29の30個の番号が与えられています。
この通し番号は1から始まっていないので、注意をしてください。
この通し番号のことを添え字(インデックス番号)、
配列中の一つ一つの値のことを要素といいます。
要素の一つを指定する書式
書式例
配列名[添え字]
具体例
score[0] // 配列の0番目の要素を指定
配列の初期化方法
配列の初期化方法は宣言時に行う方法と宣言とは別に行う方法があります。
宣言時の初期化の例
int array_test1[5] = { 1, 2, 3, 4, 5 };
int array_test2[5] = { 1, 2, 3 };
int array_test3[] = { 1, 2, 3, 4, 5 };
宣言時の初期化は配列宣言をした後に代入演算子「=」を使用し、
初期化するデータを{};の中で設定します。
要素を区切るには「,」を使用します。
初期化例の3つ目は配列の大きさを指定していません。
配列の大きさを指定しない場合、初期化に使用した値の数が
そのまま配列の大きさとして扱われます。
例題では初期化している値の数は5つなので、配列の大きさは5になります。
宣言後に初期化を行った例
int array_test[5];
array_test[0] = 1;
array_test[1] = 2;
array_test[2] = 3;
array_test[3] = 4;
array_test[4] = 5;
宣言後に初期化を行う場合は初期化する添え字を指定して値を代入します。
宣言時に配列の大きさを指定しないという方法は使用できませんので、
宣言の際には必ず配列の大きさを決める必要があります。
エラーになるパターン
int arrray_test[]; // 配列の大きさ決まっていない
array_test[0] = 1;
多次元配列
多次元配列とは配列の中にさらに配列を追加した配列のことです。
通常の配列は1次元配列、配列の中にさらに配列を並べた配列を2次元配列といいます。
2次元配列の中にさらに配列を増やすことで3次元、4次元と増やしていくことも可能です。
書式
書式例
配列の型 配列名[要素数][要素数];
具体例
int part_time[7][2]; // 1週間のバイトの勤務時間と残業時間
宣言例
2次元の配列の初期化も宣言時と同時に行う方法と宣言後に行う方法があります。
宣言時に行う例
int part_time[7][2] = {
{ 8, 0 }, // 月曜:勤務時間8、残業時間0
{ 0, 0 }, // 火曜:勤務時間0、残業時間0
{ 8, 0 }, // 水曜:勤務時間8、残業時間0
{ 10, 2 }, // 木曜:勤務時間10、残業時間2
{ 9, 1 }, // 金曜:勤務時間9、残業時間1
{ 5, 2 }, // 土曜:勤務時間5、残業時間2
{ 0, 0}, // 日曜:勤務時間0、残業時間0
};
宣言時に行う場合は1次元配列と同じで{}の中に初期値する変数を設定していきます。
2次元配列は配列の中に配列が入っているという仕様ですので、
具体例の配列では7つの配列の一つ一つにint型の配列[要素数2]が入っています。
ですので {int型,int型 },を7つ用意することで[7][2]の配列を初期化することができます。
宣言後に行う例
int part_time[7][2]; // バイトの勤務時間と残業時間
int part_time[0][0] = 8; // 月曜、勤務時間
int part_time[0][1] = 0; // 月曜、残業時間
int part_time[1][0] = 0; // 火曜、勤務時間
int part_time[1][1] = 0; // 火曜、残業時間
int part_time[2][0] = 8; // 水曜、勤務時間
int part_time[2][1] = 0; // 水曜、残業時間
int part_time[3][0] = 10; // 木曜、勤務時間
int part_time[3][1] = 2; // 木曜、残業時間
int part_time[4][0] = 9; // 金曜、勤務時間
int part_time[4][1] = 1; // 金曜、残業時間
int part_time[5][0] = 5; // 土曜、勤務時間
int part_time[5][1] = 2; // 土曜、残業時間
int part_time[6][0] = 0; // 日曜、勤務時間
int part_time[6][1] = 0; // 日曜、残業時間
宣言後の初期化
宣言後に初期化する場合は各要素を指定して初期値を代入します。
2次元配列使用例
int part_time[7][2] = {
{ 8, 0 }, // 月曜:勤務時間8、残業時間0
{ 0, 0 }, // 火曜:勤務時間0、残業時間0
{ 8, 0 }, // 水曜:勤務時間8、残業時間0
{ 10, 2 }, // 木曜:勤務時間10、残業時間2
{ 9, 1 }, // 金曜:勤務時間9、残業時間1
{ 5, 2 }, // 土曜:勤務時間5、残業時間2
{ 0, 0}, // 日曜:勤務時間0、残業時間0
};
printf("木曜日の残業時間は%d時間です\n", part_time[3][1]);
実行結果:
木曜日の残業時間は2時間です