コース一覧
    C言語基礎 関数・配列編
    配列

    C言語基礎 関数・配列編

    C言語の関数と配列を学び、処理を分割してデータを扱うコースです。

    1
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. プロトタイプ宣言15分
    04. void関数15分
    05. 変数のスコープ15分
    06. つくる 関数に分割15分
    07. 第5章クイズ10分
    2
    配列と文字列
    01. 配列15分
    02. 配列とfor15分
    03. 集計15分
    04. 最高点と最低点15分
    05. 文字列(char配列)15分
    06. 文字列関数15分
    07. 文字列の入力15分
    08. つくる 配列で成績管理15分
    09. 第6章クイズ10分

    配列

    変数を5つ用意するのはつらい

    前章までは、点数を持つのに int kokugo, sugaku, eigo; のように変数を1つずつ用意していました。3科目ならまだ書けますが、5科目なら5個、40人ぶんなら40個の名前を考えることになります。しかも変数名は固定なので、「3番目の点数」を番号で選ぶことができません。ループと相性が最悪なのです。

    これを解決するのが 配列 です。同じ型の値を、番号の付いた箱として1つの名前でまとめて持てます。

    c

    int scores[5];

    int が中身の型、scores が名前、[5] が箱の個数です。これで int が5個ぶん、メモリ上に連続して確保されます。個数のところには変数ではなく、5 や #define した定数のような、コンパイル時に決まる値を書くのが基本です。

    添字は0から始まる

    1つ1つの箱は 添字 (そえじ) を付けて取り出します。

    c

    scores[0] = 80;   // 1科目目
    scores[1] = 65;   // 2科目目
    printf("%d\n", scores[0]);

    ここが最初の関門で、添字は1ではなく 0から始まります。int scores[5] の有効な添字は 0 から 4 までで、scores[5] は存在しません。「1科目目が scores[0]」という1つずれた対応を、指が覚えるまで意識して書いてください。

    0から始まるのは、配列の先頭からいくつ後ろにずれた箱かを表しているからです。先頭の箱は「0個ぶんずれた箱」なので0番になります。

    宣言と同時に値を入れる

    1つずつ代入するかわりに、宣言と同時に並べて書けます。

    c

    int scores[5] = {80, 65, 92, 74, 58};
    int counts[5] = {0};        // 残りも自動で0になる
    int days[] = {31, 28, 31};  // 個数を書かないと、並べた数だけ確保される

    {0} と書くと、明示していない残りの要素は 0 で埋められます。全部を 0 で始めたいときの定番です。逆に int scores[5]; とだけ書いた場合、中身は何が入っているか分かりません。読む前に必ず値を入れてください。

    範囲外は誰も止めてくれない

    C には、添字が範囲内かを実行時に確かめるしくみがありません。scores[5] や scores[-1] と書いてもコンパイルは通り、実行しても何も言われないことがあります。実際には配列の外側にある別の変数の場所を読み書きしてしまい、まったく関係ない変数の値が壊れます。

    原因の行と、おかしくなる場所が離れるので、追いかけるのが非常に大変です。配列を触るときは「上限は個数マイナス1」を毎回確かめる、という習慣で防ぎます。

    では、5科目の点数を配列で持ってみましょう。

    要件

    1. int の配列 scores に 80, 65, 92, 74, 58 を入れる
    2. 1科目目は80点です の形で3行表示する
    3. 表示する科目は1科目目・3科目目・5科目目の3つ

    ヒント

    1科目目は scores[0] です。番号を1つずらして考えてください

    5科目目は scores[5] ではありません

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • 配列とfor

      配列の全要素を繰り返しで処理できるようになります。

    • 集計

      配列から合計と平均を出せるようになります。

    • 最高点と最低点

      比較しながら最大値と最小値を探せるようになります。

    • 文字列(char配列)

      C の文字列が終端記号付きの char 配列であることを説明できるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 変数データに名前をつけて参照する仕組み
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • 配列サイズ固定の同型データの集まり
    • メモリプログラムとデータを一時保持する高速領域
    • コンパイルソースをバイトコードへ変換する処理
    main.c
    エディタを読み込んでいます

    メモ

    配列

    ⌘S で保存