#define N 8
   double a[] = {1.0, 2.0, 3.0, 4.0, 5.0};
   double b[5] = {0.0};
   double c[5] = {0.0, 1.0};
   double d[N] = {0.0, 1.0};
   double e[2][3] = {{1.0, 2.0, 3.0}, {10.0, 20.0, 30.0}};
のように行うこととする.
このとき, 各配列の全ての要素を printf 関数により画面(標準出力)に出力するプログラムを作成せよ.
   int vc[] = {1, 2, 3, 4, 5};
   int vc[5] = {0};
   int vc[5] = {0, 1};
int main(void)
{
    int i;
    int a[5] = {1, 2, 3, 4, 5};
    int b[5];
    b = a; // 誤り.
    return 0;
}
  C言語では, このような代入は, 構造体を用いることで実現できる.
#include <stdio.h>
int main(void)
{
    double vx[5];
    scanf("%lf", &vx[3]); // vx[3]に値を読み込む.
    printf("vx[3]= %f\n", vx[3]);
    return 0;
}
全ての配列要素に値を読み込む時は forを用いて次のようにする.
#include <stdio.h>
int main(void)
{
    int i;
    double vx[5];
    for(i=0; i<5; i++)
        scanf("%lf", &vx[i]); // vx[i]に値を読み込む.
    for(i=0; i<5; i++)
        printf("vx[%d]= %f\n", i, vx[i]); // vx[i]を出力する.
    return 0;
}
   int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
   int b[2][3] = {0};
#define NUMBER 5C言語では, 大域的な変数, 定数には大文字を, 局所的な変数, 定数には小文字を使う慣習がある.
p.89に
配列を宣言する際の要素数は, 定数でなければなりません. すなわち,以下のような宣
言はエラーとなることを覚えておきましょう.
    int n = 5;
    int a[n];    /* エラー:要素数は定数でなければならない */
とあるが, これは1989年, 1990年のC言語の規格 C90に基づいた仕様.
その後 1999年に改訂された規格(C99)では, 要素数に変数を用いることができる. これは特に可変長配列と呼ばれる. さらに, C99では型宣言をブロック内のどこで行ってもよい. 従って, 以下のようなプログラムが可能である.
#include <stdio.h>
int main(void)
{
    int n;
    scanf("%d", &n);
    int a[n];
    a[0] = 0;
    /* ... */
    return 0;
}
ただし, コンパイラーが対応していないと実際に使用することはできない. gcc でコンパイルする場合には,
gcc -std=c99 filename.c
のように -std=c99 オプションを付ける.
(c)1999-2013 Tetsuya Makimura