目次
プログラミングでは、複数のデータを処理する際に「配列」がよく利用されます。
配列は、複数のデータをまとめて扱うために使用され、一つの変数名で複数の値を管理することができます。
C言語をこれから学んでいこうという方にとって、C言語のプログラミングで頻繁に利用される配列について学ぶことは重要です。
「配列を使うとどのようなメリットがあるのか」
「C言語でどのようにして配列が使えるのか」
上記のような疑問を持つ方のために、この記事では、C言語の配列について、メリットや基本的な使い方について解説していきます。
C言語の配列について
配列とは、複数のデータを記憶しておくためにプログラミングでよく利用されるデータ構造です。
配列はプログラミングで必須とされるデータ構造であり、C言語を使った開発でもよく利用されます。
ここではC言語の配列の基礎知識や配列を利用するメリットについて詳しく解説していきます。
配列とは?
配列とは、複数のデータをまとめるために役立つデータ構造です。
プログラミングでは、データを保存するための方法として「変数」がよく用いられますが、
1つの変数に対して1つのデータしか保存できません。
それに対して配列は、1つの配列に対して複数のデータを保存でき、保存した複数のデータを一つのまとまりとして扱うことができます。
例えば、5人分のテストの点数を保存するために変数を用いる場合、int a、int b、int c、int d、int eなどと、5つの変数を宣言する必要があります。
しかし配列を使えば、int score[5];といったように1行のプログラムで配列を宣言して、配列内にデータを保存できるのです。
このように複数のデータを扱う際、変数ではなく配列を用いることでコードの記述量を減らすことができ、見やすいプログラムを作成できます。
また配列には次元という概念があり、配列の要素に別の配列をいれることで、2次元、3次元と、次元の高い配列を作成可能です。
例えば2次元配列は、int score[4][5];という形で宣言されます。
2次元配列では表のように、縦と横のインデックスを使うことで要素にアクセスすることができ、複数のデータをテーブルデータのような形式で整理する際に役立ちます。
配列を使うメリット
配列を使って複数のデータをまとめることには以下の4つのメリットがあります。
- 複数のデータを効率的に扱える
- プログラムを短く簡潔に書ける
- 同じような処理を効率的に繰り返せる
- メモリの使用量を減らせる
配列を使う最大のメリットは、効率的に複数のデータを扱えることです。
例えば100個の整数を1つ1つ変数に代入するとなると、とても手間がかかりますが、配列を使えば一度で100個の整数を保存できます。
そして複数のデータを扱うコードを一行で書けるため、プログラムが簡潔になり、かつデータを簡単に取り出すこともできます。
また、配列を使うことで、同じような処理を繰り返し行う作業を効率的に行えることもメリットの一つです。
例えば、100個の整数を2倍にしたい場合、配列を使うことで簡単に繰り返し処理を行うことができます。
このように処理を効率的に行うことは、メモリ使用量を減らすことにもつながるため、プログラムのパフォーマンス向上にも役立ちます。
C言語の配列の使い方について
ここでは、C言語で配列を宣言する方法や、配列へデータを保存する方法、配列のコピー方法など基本的な使い方を説明していきます。
配列の宣言方法
配列を使うためには、まず配列を「宣言」、作成する必要があります。
C言語で配列を宣言する際は、以下のように配列のデータ型と配列名、そして配列内のデータ(要素)の数を指定します。
C言語では、配列の宣言時に格納するデータの型も指定しなければいけないことには注意が必要です。
例えば、int型の整数を5つ保存した配列を宣言する場合は、以下のように書きます。
int array[5];
}
またC言語では配列を宣言する際に要素数を指定する必要があるため、宣言後に要素数を変更することができません。
要素数を変更する場合、配列を再度宣言する必要があることにも注意してください。
配列の代入とコピーの方法
配列の宣言が完了したら、配列の各要素にデータを代入していきます。
C言語では、以下のように配列の各要素にアクセスして、一つ一つ値を代入していきます。
int array[5];
array[0] = 0;
array[1] = 10;
array[2] = 20;
array[3] = 30;
array[4] = 40;
}
上記の例では、arrayという配列の5つの要素それぞれに0、10、20、30、40という値を代入しています。
また、配列の要素に一つ一つ代入をすると時間がかかり、コードも冗長になるため、ループ処理を行う代入方法も利用されます。
int array[5];
for (i = 0; i < 5; i = i + 1) {
array[i] = i * 10;
}
}
また要素を代入した配列のデータを別の配列にコピーすることができます。
配列のコピーは、別の配列に対して操作を行う必要がある場合に役立ちます。
例えば、配列をソートしたいが、元の配列の順序を変更したくない場合や、配列内のデータのバックアップを取っておきたい場合に配列のコピーを利用します。
C言語で配列をコピーしたい場合は、ループ処理を使用する方法と、C言語の標準ライブラリとして備わっているmemcpy関数を使用する方法があります。
以下のコードでは、forループを使用してarray1の各要素を順番に取り出して、array2にコピーしています。
int array1[5] = {0, 10, 20, 30, 40};
int array2[5];
for(int i=0; i<5; i++) {
array2[i] = array1[i];
}
}
また指定されたメモリ領域にデータをコピーするための関数であるmemcpy関数を利用して配列をコピーすることもできます。
以下のコードでは、C言語に標準で備わっているmemcpy関数を利用して、array1の各要素を順番にarray2にコピーしています。
int array1[5] = {10, 20, 30, 40, 50};
int array2[5];
memcpy(array2, array1, sizeof(array1));
}
2次元配列の使い方について
1次元配列を例に宣言方法や代入方法を紹介してきましたが、2次元配列を利用することでは、より複雑な構造を持つデータを簡単に扱うことができます。
ここでは、2次元配列の基礎知識と作成方法を解説していきます。
2次元配列とは
2次元配列とは、複数の要素が格子状に並び、表のように扱うことができる配列のことです。
2次元配列は、行と列を持つ表のようなデータ構造を持ち、縦と横のインデックスを組み合わせて各要素にアクセスすることができると考えるとわかりやすいでしょう。
一般的に行列を扱うために2次元配列は使われ、配列の要素に配列を代入することで2次元配列を表現できます。
2次元配列は、これまで紹介した1次元配列で扱ったデータよりも、さらに複雑な構造を持つデータを扱う際に利用されます。
例えば、5人分のテストの点数を保存するために配列を用いる際、1次元配列では、int score[5];のように配列を宣言して、点数データのみを保存してきました。
2次元配列を用いることで、1次元配列で格納したテストの点数と各生徒の学籍番号などの情報を同時に保存することが可能となります。
2次元配列の宣言と初期化の方法
2次元配列も1次元配列と同様、利用する際に配列を宣言する必要があります。
C言語で2次元配列を宣言する際は、以下のように配列のデータ型と配列名、そして要素として代入する配列の行と列の数を指定します。
データ型 配列名[配列の行数][配列の列数];
例えば、int型の2次元配列を宣言する場合は、以下のようになります。
int my_array[3][4];
}
上記のコードでは3行4列のint型の2次元配列を宣言しています。
宣言した2次元配列に何らかの初期値を与える(初期化する)場合は、各要素を「,」(カンマ)で区切って、以下のように宣言と同時に初期化することが可能です。
int my_array[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
}
また2次元配列の宣言後であっても、以下のようにそれぞれの要素を代入することもできます。
int my_array[3][4]; my_array[0][0] = 2;
my_array[0][1] = 7;
my_array[0][2] = 4;
my_array[1][0] = 6;
my_array[1][1] = 9;
my_array[1][2] = 1;
my_array[2][0] = 3;
my_array[2][1] = 5;
my_array[2][2] = 8;
}
各行の要素数が同じ場合は、以下のようにリストを使うことで行数を省略して宣言、初期化をすることもできます。
int my_array[][4] = {{1, 2, 3, 4}, {5, 6, 7, 8},{9, 10, 11, 12}};
}
列数が同じ場合は、省略して宣言、初期化することができないため注意が必要です。
まとめ
C言語の配列について基礎知識と使い方を解説しました。
配列は、同じ型の変数を複数宣言する必要がなく、一つの変数で複数のデータを扱うことができるため、プログラムの効率や読みやすさの向上に役立ちます。
今回はC言語の配列を宣言する方法やデータを保存する方法など基本的な使い方のみを解説しましたが、順序を並び変えたりとより複雑な操作をすることも可能です。
また2次元配列を利用することで、学生の成績データ、商品の在庫データ、画像データなど、複数種類の情報を同時に扱うデータの利用も可能となります。
配列はC言語の基礎の一つであり、プログラミングにおいては非常に重要な役割を果たします。
この記事で解説した配列の基本的な使い方を理解し、使いこなして、C言語のスキルをさらにレベルアップさせていきましょう!