一般に、変数は宣言と同時に初期化をする事が出来る。
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 の配列が宣言されたことになる。