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";
文字列と末尾のヌル文字に必要な領域を手作業で計算せずに済む。