見出し画像

No.18 配列について(1)

今回は、C言語の配列について解説します。

前回の記事をまだ見ていない方は、下記のリンクからぜひ見てください。
前回の記事を見てからこの記事を見ると理解しやすいです。↓

また、わからない点があればぜひコメントお願いします。
わかりやすいように更新させていただきます。


配列とは

配列 というのは、同じ種類のものをたくさん収納できる引き出しのようなものです。

例えば、棚を想像してみてください。この棚には、書類が10冊入っているとします。この棚全体を「書類の棚」と呼ぶ代わりに、C言語では「書類の配列」と呼びます。

棚の1つ1つの引き出しは、書類1冊を収納する場所です。この引き出しにあたるものを、C言語では「要素」と呼びます。

配列を使うメリット

先程の棚の例でいうと

  • まとめて管理: 書類を1冊ずつ別の箱に入れる代わりに、一つの棚にまとめて入れることで、管理が楽になります。

  • アクセスが簡単: どの書類を取り出すか、棚の番号(インデックス)を指定するだけで簡単に取り出すことができます。

配列の書き方

配列の宣言

C言語で配列を宣言する際は、次のように書きます。↓

データ型 配列名[要素数];
  • データ型: 配列に格納するデータの型(int, char, doubleなど)

  • 配列名: 配列の名前(任意)

  • 要素数: 配列に含まれる要素の数

宣言と同時に行う代入

int ages[3] = {20, 25, 30};

上記のように、配列を宣言する際に、{ }で囲んで初期値を指定することができます。

後から値を代入する

int scores[5];
scores[0] = 80;
scores[1] = 75;
// ...

上記のように、各要素に個別に値を代入することも可能です。

C言語での例

5人の学生の数学のテストの点数を管理したいとします。

変数を使う場合:

int student1 = 80;
int student2 = 75;
int student3 = 90;
int student4 = 85;
int student5 = 95;

配列を使う場合:

int scores[5] = {80, 75, 90, 85, 95};

上記のように配列を使うことで次のようなメリットがあります。↓

  • コードの簡潔化: 変数をたくさん宣言する手間が省ける。

  • 一括処理: for文などを使って、全ての点数に対して同じ処理を簡単に実行できる。

  • アクセスが簡単: scores[0] で1人目の点数、scores[1] で2人目の点数のように、インデックスを使って簡単にアクセスできる。

文字列を配列で扱う

文字列を配列で扱う場合には、先程の棚のイメージとは異なったものとなります。

イメージ例

C言語で文字列を扱うイメージを、皆さんがよく知っている「本棚」に例えて説明します。

本棚は、たくさんの本を収納する場所ですよね。C言語の文字列も、たくさんの文字を収納する場所と考えるとわかりやすいでしょう。

  • 本棚: 文字の配列

  • 本: 1文字

  • 本棚の1段: 配列の1つの要素

例えば、「こんにちは」という文字列を本棚に収納する場合、それぞれの文字(「こ」「ん」「に」…)を、本棚の1段ずつに順番に置いていきます。
そして、本棚の最後の段には、特別な本(ヌル文字 ' \0 ')を置いて、本棚の終わりを示します。

なぜヌル文字が必要か?

本棚に本をたくさん並べたときに、どこまでが本で、どこからが空のスペースなのかを区別するために、最後の段に目印の本(ヌル文字)を置く必要があります。
コンピューターも、文字列の終わりをどこで判断すればいいのか、このヌル文字を見て判断しているのです。

プログラム例

char str[10] = "こんにちは";

このコードでは、str という名前の配列に、「こんにちは」という文字列を収納しています。

表でのイメージ

先程のプログラムを、表で表すと次のようになります。↓

配列を使ったプログラム例

#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;
}

上記のプログラムは、配列 numbers に入っている数を出力するものです。↑
for文で変数 i を毎回1ずつ増加させることで、配列のインデックスを変えて numbers の内容を出力します。

配列のインデックスは変数をいれることもできます。

#include <stdio.h>

int main() {
    char name[20];
    printf("あなたの名前を入力してください: ");
    scanf("%s", name);
    printf("こんにちは、%sさん!\n", name);
    return 0;
}

また、このプログラムは入力された名前を出力するものです。↑
scanf関数で入力された名前を配列 name に代入し、printf関数で出力します。

今回は以上です。

いいなと思ったら応援しよう!