配列とは
C 言語における配列の具体的な使い方を見ていく前に、配列というものがどういうものか、どういったときに利用すると便利なのかなど配列に関して簡単に解説を行います。
(Last modified: )
目次
配列とは
サンプルとして次のようなプログラムを書く場合を考えてみます。生徒が 5 人いるクラスで、 10 人それぞれの成績を画面に表示したいとします。このような場合、例えば下記のようなプログラムが考えられます。
int seiseki1;
int seiseki2;
int seiseki3;
int seiseki4;
int seiseki5;
seiseki1 = 90;
seiseki2 = 45;
seiseki3 = 89;
seiseki4 = 75;
seiseki5 = 60;
printf("1人目の成績%d\n", seiseki1);
printf("2人目の成績%d\n", seiseki2);
printf("3人目の成績%d\n", seiseki3);
printf("4人目の成績%d\n", seiseki4);
printf("5人目の成績%d\n", seiseki5);
5 人分の成績を格納するための変数をそれぞれ用意し、成績となる数値を格納し、最後にそれぞれの成績を表示させています。
5 人分の成績を保存するには保存する領域を5つ用意しなければならないのは仕方ありませんが、同じ目的で使用する変数は 1 つにまとめてしまい、 1 つの変数で 5 つの領域を管理できると便利です。このような時に配列を使用します。
詳しい使い方は次のページ以降で確認していきますが、配列を使うことで次のように記述することができます。
int seiseki[5];
seiseki[0] = 90;
seiseki[1] = 45;
seiseki[2] = 89;
seiseki[3] = 75;
seiseki[4] = 60;
printf("1人目の成績%d\n", seiseki[0]);
printf("2人目の成績%d\n", seiseki[1]);
printf("3人目の成績%d\n", seiseki[2]);
printf("4人目の成績%d\n", seiseki[3]);
printf("5人目の成績%d\n", seiseki[4]);
配列は 1 つの変数名を使って複数の記憶領域を管理することができます。今回は「seiseki」と言う変数名を用意し、 5 つの領域を割り当てています。そして各領域に対して最初のサンプルと同じように成績を格納し画面に出力しています。各領域は添字(インデックス)と呼ばれる数値を使って区別します。
最初のサンプルと比べて同じ成績を管理している変数を 1 つにすることができますので、同じ目的で使用していることが明確となります。また別々の変数名を用意するのではなく 1 つの変数名を使い、それぞれの領域をインデックスで管理することで先ほどのサンプルをさらに次のように書き換えることができます。
int seiseki[5];
int i;
seiseki[0] = 90;
seiseki[1] = 45;
seiseki[2] = 89;
seiseki[3] = 75;
seiseki[4] = 60;
for (i = 0 ; i < 5 ; i++){
printf("%d人目の成績%d\n", i + 1, seiseki[i]);
}
インデックスは数値であるため、数値型の変数を使って置き換えることができます。そして数値型の変数は加減算を行って変化させることができるため上記のように for 文などの繰り返し処理を使い簡潔に表現することができます。
このようなことが出来るのが配列の大きな特徴です。
では簡単なサンプルプログラムを作成して試してみます。
#include <stdio.h>
int main(void){
int seiseki[5];
int i;
seiseki[0] = 90;
seiseki[1] = 45;
seiseki[2] = 89;
seiseki[3] = 75;
seiseki[4] = 60;
for (i = 0 ; i < 5 ; i++){
printf("%d人目の成績%d\n", i + 1, seiseki[i]);
}
return 0;
}
上記を「test1-1.c」の名前で保存します。まずコンパイルを行います。
コンパイルが終わりましたら「test1-1」と入力して実行します。
では次のページから配列の詳しい使い方を確認していきます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。