月ノ書

<C言語>配列

今回の記事でわかること
  • 配列の使い方が分かる
  • 配列と変数の違いが分かる
  • 配列を使うと便利な場面が分かる

配列とは

プログラムでいう「配列(array)」とは、同じ型のデータをまとめて扱う箱のことを指します
例えば、「テストの点数を30人分管理したい」場合、変数を30個作るのは大変ですが、変数ならまとめて扱えます

int scores[30];    // int型を30個まとめて管理できる

配列の基本的な書き方

配列を使うときは「型名 配列名[要素数]」と書きます

#include <stdio.h>

int main(void) {
    int scores[5] = {70, 80, 90, 60, 85};

    printf("1人目の点数: %d\n", scores[0]);
    printf("2人目の点数: %d\n", scores[1]);
    printf("3人目の点数: %d\n", scores[2]);

    return 0;
}

/* 出力結果
1人目の点数: 70
2人目の点数: 80
3人目の点数: 90
*/

インデックス(添字)は0から始まるので注意!scores[0] が最初の要素、score[4] が最後の要素

配列のよくある使い方

繰り返しと組み合わせてまとめて処理

配列はループと組み合わせるととても便利です

#include <stdio.h>

int main(void) {
    int scores[5] = {70, 80, 90, 60, 85};
    int sum = 0;

    for (int i = 0; i < 5; i++) {
        sum += scores[i];
    }

    printf("平均点: %d\n", sum / 5);

    return 0;
}

/* 出力結果
平均点: 77
*/

5人分の合計点を繰り返しと配列で計算し、出力時に平均を求めて出力しています

初期化の仕方いろいろ

配列の宣言と同時に中身を決めることができます

int nums[5] = {1, 2, 3, 4, 5};   // 1,2,3,4,5で初期化
int zeros[5] = {0};              // すべて0で初期化
int autoSize[] = {10, 20, 30};   // 要素数は省略OK(3になる)

文字列も実は配列

C言語の文字列は「文字の配列 + 終端文字(’\0’)」になっています

char str[] = "Hello";
printf("%s\n", str);

/* 出力結果
Hello
*/

配列を扱う上での注意

範囲外アクセスはバグの元

score[5] のように要素数を超えるアクセスをすると、意図しない動作(バッファオーバーフロー)になります

要素数は定数で決めると安全

定数で決めておくと、後から変更したくなった際、定数の値だけを変更すればいいので、簡単かつ後から見た人でもわかりやすいという利点があります

#define STUDENTS 5
int scores[STUDENTS];

C言語はサイズを自動拡張しない

C++の std::vector や Python のリストと違って、C言語の配列は固定長

配列が便利な場面

学習進捗

0
Would love your thoughts, please comment.x