C言語には同じデータ型の複数の値をまとめて扱うための配列があります。
配列を使うと同じデータ型の変数を複数宣言する必要がなくなるため、簡潔にコードを記述することができるようになります。
この記事では、
・配列とは
・配列の使い方
・配列の宣言と初期化をする方法
・配列に代入とコピーをする方法
という基本的な内容から、
・2次元配列(多次元配列)の使い方
・配列の要素数(サイズ)をsizeof関数で取得する方法
などの応用的な使い方に関しても解説していきます。
今回はこれらの方法を覚えるために、配列のさまざまな使い方をわかりやすく解説します!
配列とは
配列とは、同じデータ型の複数の値を1つの変数にまとめて使用するためのものです。
配列を使うと同じデータ型の変数を複数宣言する必要がなくなるため、簡潔にコードを記述することができるようになります。
配列の詳しい使い方はこの記事で順に解説していくので、ぜひ最後まで確認してください!
配列の宣言と初期化をする方法
配列を宣言する方法
配列の宣言は次のように、データ型と変数名と要素数を記述します。
// 配列の宣言 int intArray[3]; // 配列を使わない場合の宣言 int num1, num2, num3;
配列を使うと複数の値を1つの変数でまとめて扱うことができるため、コードを簡潔に記述できることが確認できます。
配列を初期化する方法
ここでは配列を初期化する方法を解説します。
配列の初期化は宣言と同時に初期化する方法と、値を1つずつ代入する方法があります。
配列の宣言と同時に初期化する場合は、配列の要素数の記述を省略することができます。
配列を初期化する方法を次のプログラムで確認してみましょう。
#include <stdio.h> int main(void) { // 宣言と同時に初期化 int intArray1[3] = { 1, 2, 3 }; for (int i = 0; i < 3; ++i) { printf("%d ", intArray1[i]); } printf("\n"); // 要素数を省略して初期化 int intArray2[] = { 4, 5, 6 }; for (int i = 0; i < 3; ++i) { printf("%d ", intArray2[i]); } printf("\n"); // 1つずつ値を代入して初期化 int intArray3[3]; intArray3[0] = 7; intArray3[1] = 8; intArray3[2] = 9; for (int i = 0; i < 3; ++i) { printf("%d ", intArray3[i]); } return 0; }
[実行結果]
1 2 3 4 5 6 7 8 9
このプログラムでは配列を指定した値で初期化して、その値を表示しています。
プログラムの実行結果から、いずれの方法でも初期化ができていることが確認できます。
配列をコピーする方法
ここでは配列をコピーする方法を解説します。
配列のコピーは「配列A = 配列B」のように記述してコピーすることはできません。
そのため、for文を使って要素を1つずつコピーするか、memcpy関数を使ってコピーすることになります。
配列をコピーする方法を次のプログラムで確認してみましょう。
#include <stdio.h> #include <string.h> int main(void) { int intArray1[3] = { 1, 2, 3 }; int intArray2[3]; int intArray3[3]; // for文でコピー for (int i = 0; i < 3; ++i) { intArray2[i] = intArray1[i]; printf("%d ", intArray2[i]); } printf("\n"); // memcpy関数でコピー memcpy(intArray3, intArray1, sizeof(int) * 3); for (int i = 0; i < 3; ++i) { printf("%d ", intArray3[i]); } return 0; }
[実行結果]
1 2 3 1 2 3
このプログラムではfor文で配列をコピーした結果と、memcpy関数でコピーした結果をそれぞれ表示しています。
プログラムの実行結果から、いずれの方法でも正しくコピーができていることが確認できます。
配列の初期化やコピーなどの基本的な使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!
2次元配列(多次元配列)の使い方
ここでは2次元配列(多次元配列)の使い方を解説します。
2次元配列は次のように記述します。
データ型名 変数名[行の要素数][列の要素数];
2次元配列の使い方を次のプログラムで確認してみましょう。
#include <stdio.h> int main(void) { int intArray[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } }; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", intArray[i][j]); } printf("\n"); } return 0; }
[実行結果]
1 2 3 4 5 6
このプログラムでは2次元配列を値を指定して初期化して、その後に2重ループを使って2次元配列の値を表示しています。
2次元配列の使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!
配列の要素数(サイズ)をsizeof演算子で取得する
最後に配列の要素数(サイズ)をsizeof演算子で取得する方法を解説します。
sizeof演算子は変数や型のメモリサイズをバイト単位で返します。
配列の要素数はsizeof演算子で配列全体のメモリサイズを求め、それを配列の要素一つ分のメモリサイズで割ることで求めることができます。
配列の要素数をsizeof演算子で取得する方法を次のプログラムで確認してみましょう。
#include <stdio.h> int main(void) { int intArray[3] = { 1, 2, 3 }; int arrayNumber = sizeof intArray / sizeof intArray[0]; printf("配列の要素数 : %d", arrayNumber); return 0; }
[実行結果]
配列の要素数 : 3
このプログラムではsizeof演算子を使って配列の要素数を取得して表示しています。
sizeof演算子の使い方についてはこちらで詳しく解説しているので、ぜひ確認してください!
まとめ
いかがでしたか?
今回は配列の使い方について解説しました。
配列を使うと1つの変数で複数の値を扱えるようになり、簡潔にコードを記述することができるのでぜひ活用してくださいね!
もし、配列を使う方法を忘れてしまったらこの記事を確認してください!