16.3 変数の初期化と配列の初期化

一般に、変数は宣言と同時に初期化をする事が出来る。

    int  a = 0;     /* 0で初期化 */
    char c = 'a';   /* 'a' で初期化 */

これは、以下のように、実行文で行うのとは少し違う。

    int  a;
    char c;
    a = 0;      /* 0を代入 */
    c = 'a';    /* 'a' を代入 */

初期化は、コンパイル時にされるのに対して、実行文で行うと実行時に 代入されるという違いがある。( 実用的には、大した違いはないが。 )

さて、配列の初期化であるが、実は、配列の初期化には制限がある。 変数の初期化は、常に行えるのに対して、配列では、外部( グローバルな配列 ) または静的( まだこれは学習していない )であるときにしか行えない。 配列が関数の外で定義されるグローバルな配列である時を考えると、 配列の初期化は、次のように行える。

#include <stdio.h>

int array[5] = {4, 3, 8, 9, 0};

main(){

これで、大きさ 5 の配列 array について、array[0]=4, array[1]=3, array[2]=8,array[3]=9, array[4]=0 が代入される。

更に、上の宣言、初期化は次のように簡単に書くことも出来る。

#include <stdio.h>

int array[] = {4, 3, 8, 9, 0};

main(){

この場合、配列の大きさを指定していないが、初期化の個数が 5 個なので、自動的に 大きさ 5 の配列が宣言されたことになる。



最初のページ 戻る 次へ 最後のページ 目次
Hiroyasu Asami