C言語

【C言語】第3章第2回:配列の要素にアクセスする方法

配列の要素にアクセスする方法を学ぶことで、データを効率的に操作できるようになります。この章では、配列の要素にアクセスして操作する基本と応用を解説します。

1. 配列の基本構造

配列は連続したメモリ領域に値を格納し、各値にインデックスを使ってアクセスします。インデックスは0から始まります。

例:配列の宣言と基本操作

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

    // 配列の要素にアクセス
    printf("First element: %d\n", numbers[0]);
    printf("Third element: %d\n", numbers[2]);

    return 0;
}

解説:

  • numbers[0]は最初の要素を指します(値は10)。
  • numbers[2]は3番目の要素を指します(値は30)。

2. 配列の要素を更新する方法

配列の要素を更新するには、インデックスを指定して新しい値を代入します。

例:配列の要素を更新するプログラム

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

    // 要素を更新
    numbers[2] = 100; // 3番目の要素を100に変更

    printf("Updated third element: %d\n", numbers[2]);

    return 0;
}

解説:

  • numbers[2] = 100;:3番目の要素に新しい値を代入。
  • 更新後の要素はprintfで確認できます。

3. 配列をループで操作する

配列全体を操作する場合、ループを使うと便利です。

例:配列のすべての要素を表示するプログラム

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

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

    return 0;
}

解説:

  • forループでインデックスを0から順に増加させ、すべての要素にアクセス。
  • インデックスを使うことで、動的に要素を操作できます。

4. 配列の要素を検索する

配列の中から特定の値を検索するプログラムを作成します。

例:配列内の特定の値を検索するプログラム

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};
    int target = 30;
    int found = 0;

    for (int i = 0; i < 5; i++) {
        if (numbers[i] == target) {
            printf("Found %d at index %d\n", target, i);
            found = 1;
            break;
        }
    }

    if (!found) {
        printf("%d not found in the array.\n", target);
    }

    return 0;
}

解説:

  • if (numbers[i] == target):現在の要素がターゲットと一致するかを判定。
  • 値が見つかった場合、インデックスを表示し、breakでループを終了します。

5. 配列を扱う際の注意点

  • インデックスの範囲外アクセス:範囲外のインデックスを指定すると、不正な動作やクラッシュの原因となります。
  • 未初期化の要素:未初期化の配列要素にアクセスすると、予期しない結果が生じる可能性があります。

6. 練習問題

以下の課題に挑戦し、配列の要素にアクセスする方法を練習しましょう。

  1. 整数型配列の要素を初期化し、最初と最後の要素を表示するプログラムを作成してください。
  2. 配列のすべての要素を2倍に更新し、表示するプログラムを作成してください。
  3. 配列内の最大値とそのインデックスを表示するプログラムを作成してください。

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

問1の解答

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

    printf("First element: %d\n", numbers[0]);
    printf("Last element: %d\n", numbers[4]);

    return 0;
}

問2の解答

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

    for (int i = 0; i < 5; i++) {
        numbers[i] *= 2;
        printf("numbers[%d] = %d\n", i, numbers[i]);
    }

    return 0;
}

問3の解答

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};
    int max = numbers[0];
    int index = 0;

    for (int i = 1; i < 5; i++) {
        if (numbers[i] > max) {
            max = numbers[i];
            index = i;
        }
    }

    printf("Maximum value: %d at index %d\n", max, index);

    return 0;
}

8. まとめ

配列の要素にアクセスする方法を理解し、基本操作や応用例を通じて効率的なデータ操作を学びましょう。