#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