C言語入門:配列の基礎と使い方|初心者でもわかる宣言・初期化・ループ処理まで完全解説

自然光の入るオフィスでC言語のmain関数と配列コードが表示されたモニター スキルアップ・学習

C言語を学び始めると必ず登場するのが「配列」です。
配列は複数のデータをまとめて扱うための基本機能であり、プログラミングの効率を大きく高めます。

しかし、初心者の方にとっては「添字」「初期化」「メモリの仕組み」など、つまずきやすいポイントも多い分野です。

この記事では、学習者が実際に理解し再現できる内容にまとめ、C言語の配列の基礎から実践的な使い方までを、図解イメージとサンプルコード付きで丁寧に解説します。

配列とは何か?基本概念を理解しよう

自然光の入るモダンなオフィスでC言語の配列コードが表示されたデスクトップPC
モダンなオフィスでのC言語コーディング

まずは配列の基本的な考え方を整理しましょう。

配列は「同じ型のデータを連続したメモリ領域にまとめて格納する仕組み」です。
複数の変数を1つずつ宣言する代わりに、効率よく管理できます。

配列のイメージ

例えば、5人分のテストの点数を保存したい場合、通常の変数なら以下のようになります。

int score1;
int score2;
int score3;
int score4;
int score5;

これでは管理が煩雑です。
配列を使うと次のように書けます。

int score[5];

これにより、score[0]からscore[4]までの5つの整数を扱えます。
C言語では添字は0から始まる点が重要です。

配列の宣言と初期化方法

ミニマルなオフィスでC言語の配列宣言と初期化コードが表示されたデスクトップPC
モダンなワークスペースとC言語コード

配列を正しく扱うには、宣言方法と初期化方法を理解することが重要です。
ここでは基本形から応用まで解説します。

配列の宣言方法

型名 配列名[要素数];

例:

int numbers[10];

これは整数型の要素を10個持つ配列を作成します。

配列の初期化

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

要素数を省略することも可能です。

int numbers[] = {1, 2, 3};

この場合、要素数は3になります。

配列とfor文の組み合わせ

明るいオフィスでC言語のfor文と配列処理コードが表示されたデスクトップPC
デスクでコードを書いている風景

配列はループ処理と組み合わせることで真価を発揮します。
特にfor文との相性は非常に良いです。

配列の値を順番に表示する

#include <stdio.h>

int main() {
    int score[5] = {80, 75, 90, 60, 85};
    int i;

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

    return 0;
}

このコードでは、添字を利用して順番に値を出力しています。

実行結果(Cygwin)

合計値を求める例

#include <stdio.h>

int main() {
    int score[5] = {80, 75, 90, 60, 85};
    int i;
    int sum = 0;

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

このように配列はデータ集計にも活用できます。

実行結果(Cygwin)

配列使用時の注意点

明るいオフィスでC言語の配列コードを確認する日本人女性エンジニア
プログラミングに集中するエンジニア

配列は便利ですが、扱いを誤るとバグの原因になります。
特に初心者が注意すべき点を整理します。

範囲外アクセス(オーバーフロー)

例えば、要素数5の配列に対してscore[5]へアクセスするとエラーになります。
C言語では範囲チェックが自動で行われないため、十分注意が必要です。

メモリとの関係

配列は連続したメモリ領域を使用します。

そのため、大きすぎる配列をローカル変数として宣言すると、スタックオーバーフローを起こす可能性があります。

二次元配列の基礎

明るいオフィスでC言語の二次元配列コードを確認するスーツ姿の日本人若手エンジニア
プログラマーのコード編集風景

表形式のデータを扱う場合は二次元配列を使用します。

二次元配列の宣言

int table[3][4];

これは3行4列の整数配列です。

二次元配列のループ処理

#include <stdio.h>

int main() {
    int table[3][4] = {{1, 2, 3, 4},
                       {5, 6, 7, 8},
                       {9, 10, 11, 12}};
    int i, j;

    for(i = 0; i < 3; i++) {
        for(j = 0; j < 4; j++) {
            printf("%d ", table[i][j]);
        }
        printf("\n");
    }
}

ネストされたループで処理します。

実行結果(Cygwin)

実務での配列活用例

明るいオフィスでC言語の数値配列データを処理する若い女性プログラマー
プログラミング中の女性エンジニア

配列は単なる学習用機能ではなく、実務でも頻繁に使われます

データ管理

  • 売上データの集計
  • センサーデータの保存
  • ゲームのスコア管理

アルゴリズム処理

  • ソート処理
  • 探索処理
  • 統計計算

配列を理解することは、C言語の基礎力を高めることに直結します。

まとめ|配列はC言語理解の重要基礎

明るいオフィスでC言語の配列コードを確認するスーツ姿の若手日本人エンジニア
午後のオフィスでプログラミング

C言語の配列は、複数データを効率よく扱うための最重要機能です。

宣言方法、初期化、ループ処理、範囲管理を正しく理解することで、安全で効率的なプログラムを書けるようになります。

初心者の方は、まず一次元配列とfor文の組み合わせを確実に習得しましょう。
そこから二次元配列やポインタとの関係へ進むことで、より実践的なプログラミング力が身につきます。

よくある質問(FAQ)

モダンなオフィスでC言語の配列処理コードを確認しながら笑顔で相談する若手日本人エンジニア男女
オフィスでのプログラミングセッション
Q
C言語の配列はなぜ0から始まるのですか?
A

C言語では配列の添字はメモリアドレス計算の仕組みに基づいており、最初の要素が基準アドレスとなるため0から始まります。
これにより効率的なポインタ計算が可能になります。

Q
配列の要素数を後から変更できますか?
A

通常の配列では宣言後に要素数を変更できません
可変長のデータを扱う場合はmalloc関数などを使用して動的メモリ確保を行います。

Q
配列とポインタの違いは何ですか?
A

配列は連続したメモリ領域を確保するデータ構造です。
一方、ポインタはメモリアドレスを保持する変数で、配列名は先頭要素のアドレスとして扱われますが、厳密には異なる概念です。

コメント

タイトルとURLをコピーしました