C言語 | 配列 | 配列の初期化

配列は宣言時に各要素を初期化できる。

配列変数の初期化

波括弧の中に初期値のリストを指定する。

 変数名[要素数] = { 1, 2, 3, ... };

リストの値は配列の要素数を超えてはならない。値が少ない場合、残りの要素は0で初期化される。

int iArray[4] = { 10 , 100 , 1000 , 10000 };

コード1

#include <stdio.h>

int main() {
 int iArray[4] = { 10 , 100 , 1000 , 10000 } , iCount;
 for(iCount = 0 ; iCount < 4 ; iCount++)
   printf("iArray[%d] = %d\n" , iCount , iArray[iCount]);
 return 0;
}

文字配列は1文字ずつ初期化できる。末尾のヌル文字を忘れないようにする。

コード2

#include <stdio.h>

int main() {
 char chStr[6] = { 'K' , 'i' , 't' , 't' , 'y' , 0 };
 printf("%s\n" , chStr);
 return 0;
}

文字列リテラルを使うと、末尾のヌル文字が自動的に追加される。

コード3

#include <stdio.h>

int main() {
 char chStr[6] = "Kitty";
 printf("%s\n" , chStr);
 return 0;
}

多次元配列の初期化

多次元配列には、入れ子になった初期化リストを使う。

int iArray[2][2] = { { 1 , 2 } , { 3 , 4 } };

不足する値は0で初期化される。

コード4

#include <stdio.h>

int main() {
 int row , column;
 int iArray[3][3] = {
   { 2 , 4 },
   { 8 , 16 , 32 }
 };

 for(row = 0 ; row < 3 ; row++)
   for(column = 0 ; column < 3 ; column++)
     printf("iArray[%d][%d] = %d\n" , row , column , iArray[row][column]);
 return 0;
}

多次元配列は平坦なリストでも先頭から順に初期化できる。

int iArray[2][2] = { 1 , 2 , 3 , 4 };

文字列の配列は、多次元文字配列として表現する。

コード5

#include <stdio.h>

int main() {
 char chStr[3][8] = { "Kitty" , "Kitten" , "Feline" };
 printf("%s : %s : %s\n" , chStr[0] , chStr[1] , chStr[2]);
 return 0;
}

要素数の省略

初期化子から必要なサイズを判断できる場合、角括弧を残して要素数を省略できる。

int iArray[] = { 1 , 2 , 3 };
char chStr[] = "Kitty on your lap";

文字列と末尾のヌル文字に必要な領域を手作業で計算せずに済む。