配列の初期化

配列も初期化することができる。一般的な形式は次のとおり。

型 変数名[サイズ] = {値のリスト};

「値のリスト」は、定数をカンマで区切ったもの。当然だけどサイズよりも少なくなければいけない。例えば次のように。

int ary[5] = {1, 4, 9, 16, 25};

2次元の場合にも同様に初期化できる。

int sqr[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

文字列の初期化には2通りのやり方がある。1つは、1文字ずつカンマで区切って初期化する方法。この方法だとヌル文字を自分で追加する必要がある。次の例ではヌル文字を追加していない。

char str[3] = {'a', 'b', 'c'};

もう1つは、二重引用符で囲んだ文字列で初期化する方法。この方法だとコンパイラが自動的にヌル文字を追加するので、配列の大きさを初期化しようとする文字列よりも大きくしておく必要がある。

char str[5] = "Herb";

1次元の配列を初期化する場合は、配列のサイズを指定しなくても構わない。次のようにすると、コンパイラが要素数を数えて配列のサイズを決めてくれる。

int pwr[] = {1, 2, 4, 8, 16, 32, 64, 128};

サイズを明示しない配列を、「サイズ指定のない配列(unsized array)」と呼ぶ。
何かの都合で、初期化する要素数が変わっても、数えなおさなくていいので便利。

サイズ指定のない配列は2次元以上の場合には、最初の次元だけサイズを省略することができる。逆に言うと、2次元以上のサイズは省略が出来ない。

int sqr[][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
カテゴリー: C パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください