配列
配列(array)は同じ型の変数が並んだもの。配列の要素は0から始まる番号で指定できる。例えば
int a[5];
と書けば,5個の int 型の変数 a[0],a[1],a[2],a[3],a[4] が使えるようになる。これらは一般には初期化されていないので,何が入っているかわからない(例外:関数の外で定義した場合は 0 に初期化される)。
昔のC言語では int a[5]; のような書き方はできるが,変数の値を使って例えば int a[n] のように書くことはできなかった。しかし,「5」のような具体的な値をあちこちで使うのは良くないので,
#define N 5
int a[N];
のような書き方をするのが普通であった。この N は変数ではなく「マクロ」と呼ばれるもので,C言語のコンパイルの前に「プリプロセッサ」によって N は 5 に置換される。通常の変数と区別しやすくするために大文字で書くことが多い。
現代のC言語は配列の大きさを変数で指定できる場合が多く,
int n = 5;
int a[n];
のようにしても大丈夫である。
配列は定義した時点では中身は不定である。配列を定義する際に値を指定(初期化)することもできる。例:
code:test1.c
int main(void)
{
int i;
int a[] = {1, 2, 3, 4, 5};
for (i = 0; i < 5; i++) {
}
printf("\n");
return 0;
}
2次元以上の配列も同様である。例えば
int a[3][5];
とすれば a[0][0] から a[2][4] までの $ 3 \times 5 個の要素ができる。こちらは初期化する際には最初の [] だけ中身を省略可能である:
code:test2.c
int main(void)
{
int i, j;
int a[]5 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; for (i = 0; i < 3; i++) {
for (j = 0; j < 5; j++) {
}
printf("\n");
}
return 0;
}
配列を使った例: