配列

 複数のデータを扱うときに、変数では不便に感じる場合があります。配列を使えば、複数のデータをまとめて扱うことができるようになります。配列は、変数をまとめて管理することができます。

 例えば、10人分のテストの点数の合計点、平均点、最大点、最低点などを求めるプログラムを作るとします。10人分の点数を変数に記憶させて扱おうとする場合10個の変数を用意しなければなりません。配列なら10人分の点数をまとめて扱うことができます。

複数の変数のイメージ
複数の変数のイメージ

配列のイメージ
配列のイメージ

 配列は次のように宣言して用意します。

配列宣言の書式
データ型 配列名[要素数指定];

○ ファイル

 次のようにファイルを作成してください。今回は、プログラムの入力のみを試します。実行してもメッセージ等は表示されません。

ファイル名 arrayTest1.c

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #include <stdio.h>
  2. int main(void){
  3.  //配列の宣言
  4.  int ary[4];
  5.  return 0;
  6. }

○ 解説

 5行目では整数値を4つ保存できる「ary」という名前の配列を用意しました。次のようなイメージで配列ができます。

配列の宣言
配列の宣言

配列を構成する一つ一つの変数は要素と呼ばれます。また要素にはインデックス番号が割り当てられます。インデックス番号(添字とも言う)は0から始まるので、指定した数より一つ少ないインデックス番号が最大となります。各要素にはインデックス番号が付くため、それぞれの要素を指定してデータを代入することができます。

配列代入の書式
配列名[インデックス番号] = ;

○ ファイル

次のようにファイルを作成してください。

ファイル名 arrayTest2.c

サンプルダウンロード

○ プログラム

次のようにプログラムを入力してください。

  1. #include <stdio.h>
  2. int main(void){
  3.  //配列の宣言
  4.  int ary[4];
  5.  //配列にデータを代入
  6.  ary[0] = 0;
  7.  ary[1] = 0;
  8.  ary[2] = 100;
  9.  ary[3] = 0;
  10.  //配列を表示
  11.  printf("%d\n", ary[0]);
  12.  printf("%d\n", ary[1]);
  13.  printf("%d\n", ary[2]);
  14.  printf("%d\n", ary[3]);
  15.  return 0;
  16. }

○ 実行結果

10
50
100
150

○ 解説

8~11行目では配列の各要素に値を格納しています。特に10行目ではインデックス番号「2」番の要素に「100」を代入しています。

配列に代入
配列に代入

 14~17行目は配列の各インデックス番号を指定して要素に格納されているデータを表示しています。

 配列は、変数と同じように宣言と同時にデータの代入をすることができます。これを初期化といいます。

配列初期化の書式
データ型 配列名[要素数指定] = { 値1, 値2, };
データ型 配列名[] = { 値1, 値2, };

○ ファイル

 次のようにファイルを作成してください。

ファイル名 arrayTest3.c

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #include <stdio.h>
  2. int main(void){
  3.  //配列の初期化
  4.  int ary[] = {10, 20, 30, 40};
  5.  //配列を表示
  6.  printf("%d¥n", ary[0]);
  7.  printf("%d¥n", ary[1]);
  8.  printf("%d¥n", ary[2]);
  9.  printf("%d¥n", ary[3])
  10.  return 0;
  11. }

○ 実行結果

10
20
30
40

○ 解説

 5行目では配列の宣言と同時に値を格納しています。初期化の場合は配列の要素数を指定する必要はありません。中かっこ({})で、カンマ区切りで指定した値の分だけ要素が用意されます。そして、用意された各要素に指定した順番に値が格納されます。

配列を初期化
配列を初期化

■ 配列の長さを求める

 配列の要素数がいくつあるかを調べるには、sizeof演算子を使って計算することができます。まず配列の長さを求めます。そして、配列のサイズを、配列を構成するデータ型のサイズで割ると要素数を導き出すことができます。

○ ファイル

 次のようにファイルを作成してください。

ファイル名 arrayLengthTest.c

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. #include <stdio.h>
  2. int main(void){
  3.  //配列を宣言
  4.  int ary[4];
  5.  //変数のサイズを表示する
  6.  printf("配列のサイズ:%dバイト¥n", sizeof(ary));
  7.  printf("配列の要素数:%d¥n", sizeof(ary) / sizeof(int));
  8.  return 0;
  9. }

○ 実行結果

配列のサイズ:16バイト
配列の要素数:4

○ 解説

 5行目で要素数が4つのint型の配列aryを宣言しています。そして、8行目で、配列のサイズを表示しています。int型は今回の環境では4バイトなので、4バイト×4要素=16バイトとなります。9行目で要素数を求めています。16バイト÷4バイト(int型のサイズ)=4要素となります。

 配列は次の章で学習する繰り返し処理と組み合わせるととても便利です。繰り返す回数を決めるときに配列の要素数を使用することができます。そうすることで柔軟なプログラムを作成することが可能です。

前へ   次へ