プログラムの中では、たくさんのデータを扱う場合があります。
このようなとき、1つ1つの変数を管理するのは大変ですよね。
そんなときに便利なのが、配列(array)という仕組みです。
配列を使うと、同じ種類のデータをまとめて扱うことができます。
今回は、この「配列」とは何か、基本的な考え方を説明します。
配列とは
いくつも同じ名前を持つ、同じ種類の箱が横に並んでいるイメージを思い浮かべてください。
このように並んだ箱の集まりを配列(array)といいます。
また、配列の中のそれぞれの箱のことを要素と呼びます。
つまり、配列とは、「同じ型のデータをまとめ扱う仕組み」です。
1つ1つの変数を別々に用意する代わりに、同じ名前でまとめて扱えるのが特徴です。
配列の宣言
例えば、同じ型(例:int型)の変数を10つ用意したいとします。
int test1;
int test2;
int test3;
/* : */
int test10;このように、1つずつ宣言すると、手間がかかってしまいますし、プログラムも長くなってしまいます。
そこで、便利なのが配列です。
配列を使うと、次のようにまとめて宣言できます。
int test[10];この1行で、「test」という名前を持つ、10つのint型の変数をまとめて扱えるようになります。
配列の宣言の構文は次の通りです。
型 配列名[要素数];型: int や char など、配列に入れるデータの型です。
配列名:変数名と同義で、自由に名前をつけます。
[要素数]:配列の中にいくつのデータを入れるかを数字で指定します。
これだけで、指定した数の変数をまとめて使えるようになります。
配列の使い方
配列に値を代入するには、次のように書きます。
配列名[添字] = 式;添字(そえじ)とは、どの要素(箱)に値を入れるかを指定する番号のことです。
添字は0から始まるので、配列の一番最初の箱に値を格納したい場合は、[0]を、その次は[1]というように続きます。
実際のプログラムの例を見てみましょう。
int test[5]; // 5つのint型の配列を宣言
test[0] = 100;
test[1] = 80;
test[2] = 90;
test[3] = 20;
test[4] = 60;最初に配列を宣言し、そのあとで各要素に値を代入しています。
この例では、test[0] ~ test[4] までの5つの箱に点数を入れています。
もし [5] のように指定すると、存在しない場所を指すため、誤動作の原因 になります。
配列の初期化
変数の初期化と同様に、配列も宣言と同時に値を入れることができます。
これを配列の初期化といいます。
配列の初期化は、次のように書きます。
型 配列名[要素数] = { 値1, 値2, ... };例えば、先ほどのプログラムを予め入れておきたい場合は、次のように書きます。
int test[5] = { 100, 80, 90, 20, 60 };これで、test[0] には、100test[1] には、80test[2] には、90test[3] には、20test[4] には、60
が自動的に代入されます。
配列の出力
配列に入っている値を順に表示するには、for文とprintf関数を組み合わせて使います。
次のプログラムを見てください。
#include <stdio.h>
int main(void)
{
int i;
int test[5] = { 100, 80, 90, 20, 60 };
for(i= 0; i < 5; i++) {
printf("%d番目の点数は%dです。\n", i+1, test[i]);
}
return 0;
}プログラムの説明
int test[5] = { 100, 80, 90, 20, 60 };で5つの点数を配列にまとめて代入しています。for(i= 0; i < 5; i++)で変数iを0~4まで変化させています。test[i]添字を変数iにすることで、添字が0,1,2,3,4と変化することで、test[0]~test[4]の値を順に取り出しています。printf("%d番目の点数は%dです。\n", i+1, test[i]);のi+1は、0~4を1~5としたいため、+1しています。
プログラムの実行結果は次の通りです。
1番目の点数は100です。
2番目の点数は80です。
3番目の点数は90です。
4番目の点数は20です。
5番目の点数は60です。まとめ
- 配列は、同じ型のデータをまとめて扱う仕組み
- 宣言は
型 配列名[要素数];の形で行う - 添字
[ ]を使って値を代入・参照する - 添字は 0から始まる
for文を使うと、配列を効率よく処理できる