C言語

【C言語】第1章第12回:配列初期化の詳細と異なる方法

配列は、同じ型のデータをまとめて扱うための非常に便利な機能です。この章では、C言語における配列の初期化方法を詳しく解説し、プログラム例と練習問題を通じて理解を深めていきます。

1. 配列の基本

配列は、同じデータ型の複数の要素を一つの名前で管理するデータ構造です。配列を使うことで、複数の変数を効率的に操作することが可能になります。

配列の宣言

int array[5]; // 整数型の配列を宣言し、要素数を5と指定

このコードは、5つの整数を格納できる配列を作成します。

2. 配列の初期化方法

配列の初期化には、さまざまな方法があります。以下でそれぞれを解説します。

2.1 配列を宣言と同時に初期化

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5}; // 配列を宣言と同時に初期化
    for (int i = 0; i < 5; i++) { // 配列の要素を出力
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }
    return 0;
}

解説:

  1. int numbers[5] = {1, 2, 3, 4, 5};:配列numbersを作成し、要素1~5を初期化。
  2. forループを使用して、各配列要素を順番に出力。

2.2 初期化を省略した宣言

#include <stdio.h>

int main() {
    int numbers[5] = {0}; // すべての要素を0で初期化
    for (int i = 0; i < 5; i++) {
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }
    return 0;
}

初期化式に一つの値を指定することで、全要素をその値で初期化できます。

3. 部分的な初期化

配列を部分的に初期化することも可能です。未初期化の要素には、デフォルト値(整数型では0)が格納されます。

例:部分的な初期化

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2}; // 最初の2要素を初期化し、残りは0
    for (int i = 0; i < 5; i++) {
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }
    return 0;
}

解説:未初期化の要素には、自動的に0が格納されます。

4. 配列サイズの省略

配列のサイズを省略し、初期化式から自動的にサイズを推定させることができます。

例:配列サイズの省略

#include <stdio.h>

int main() {
    int numbers[] = {10, 20, 30}; // 配列サイズを省略
    for (int i = 0; i < 3; i++) {
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }
    return 0;
}

このコードでは、初期化式の要素数(3)に基づいて配列サイズが決定されます。

5. 練習問題

以下の課題に挑戦して、配列初期化のスキルを確認してください。

  1. 5つの整数を配列に格納し、その合計を計算して出力するプログラムを作成してください。
  2. 配列を使用して、10個の奇数を初期化し、順番に出力するプログラムを書いてみましょう。
  3. 配列サイズを省略して、文字列(文字型配列)を初期化し、それを出力するプログラムを作成してください。

6. 練習問題の解答と解説

問1の解答

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5}; // 配列を初期化
    int sum = 0;

    for (int i = 0; i < 5; i++) {
        sum += numbers[i]; // 各要素を合計
    }

    printf("Sum: %d\n", sum);
    return 0;
}

解説:forループで配列の各要素をsumに加算し、合計値を出力します。

問2の解答

#include <stdio.h>

int main() {
    int oddNumbers[10];
    for (int i = 0; i < 10; i++) {
        oddNumbers[i] = 2 * i + 1; // 奇数を計算して格納
    }

    for (int i = 0; i < 10; i++) {
        printf("oddNumbers[%d] = %d\n", i, oddNumbers[i]);
    }

    return 0;
}

解説:最初のループで奇数を計算して配列に格納し、次のループで順番に出力します。

問3の解答

#include <stdio.h>

int main() {
    char message[] = "Hello, C!"; // 文字列を配列として初期化
    printf("Message: %s\n", message); // 文字列を出力
    return 0;
}

解説:文字列を初期化し、%sフォーマット指定子で出力します。

7. まとめ

配列の初期化方法を正しく理解することで、効率的にデータを管理できるようになります。配列サイズの省略や部分的な初期化など、さまざまな方法を活用して柔軟なプログラムを作成してみましょう。