数値の配列

配列には様々なものを入れることが想定できますがまずは単純な数値から考えましょう。

宣言

整数の 10 個入る配列は次のように定義できます。

int array[10];

解説です。

  • intは配列の中身の型
  • arrayは配列の名前(ここは何でも大丈夫です。aでもbでもmy_awesome_arrayでも OK)
  • [10]は 10 要素入ることを指します。

配列の初期化

整数[1,2,3]が入った配列の初期化。

int array[3] = {1,2,3};

ちなみに初期化に使う要素数に合わせて自動で配列の長さを決めてほしい場合は[]の中身を省略できます。

int array[] = {1,2,3}; // 配列の長さ3

この方法は初期化のときのみ行えます

配列に値を代入

プログラムの動作中に配列の内容を変えるには次のような方法で行います。

int array[3];
...
array[1] = 10;

このように書くことで2要素目の値が10になります。このときアクセスに用いる[]の中の値を添字と言います。

C 言語は配列を0 番目から数えます。1 要素めを指したい場合は[0]、10 要素めを指したい場合は[9]となります。 どうしてこのようなズレがあるかについて疑問を持った場合は、次回のポインタの解説を聞いてください。 ある程度納得がいくでしょう。

値を取り出す

プログラムの動作中に配列の内容を読み取るには次のような方法で行います。

int array[3];
int a;
...
a = array[1];

これで変数aに配列の 2 要素目がの値が代入されます。

printf に入れる場合は次のようになります。

int array[3];
...
printf("%d\n",array[1]);

配列の中身をすべて出力

これにはループを使います。2 通りの表示方法を書いておきます。

すべての要素を改行して出力。

int array[5] = {1,2,3,4,5};
for (int i = 0; i < 5; i++) {
    printf("%d\n");
};

一行にすべての要素をスペース区切りで表示する方法です。ループの外で改行を入れることで実現。(出力に一つ余分なスペースが入ってしまっているが、興味がある人はこれを見つけて消すことに挑戦してみてほしい。)

int array[5] = {1,2,3,4,5};
for (int i = 0; i < 5; i++) {
    printf("%d ");
};
printf("\n");

サンプルプログラム -ユーザーからの入力を受け取って格納する-

ユーザーから 5 個入力を受け取って合計を出力。

#include<stdio.h>

int main(){
    int inputs[5];

    for (int i = 0; i < 5; i++) {
        int n;
        scanf("%d",&n);
        inputs[i] = n;
    }

    int sum = 0;
    for (int i = 0; i < 5; i++) {
        sum += inputs[i];
    }
    
    printf("合計 = %d\n", sum);
}