<C言語>配列
今回の記事でわかること
- 配列の使い方が分かる
- 配列と変数の違いが分かる
- 配列を使うと便利な場面が分かる
配列とは
プログラムでいう「配列(array)」とは、同じ型のデータをまとめて扱う箱のことを指します
例えば、「テストの点数を30人分管理したい」場合、変数を30個作るのは大変ですが、変数ならまとめて扱えます
int scores[30]; // int型を30個まとめて管理できる
配列の基本的な書き方
配列を使うときは「型名 配列名[要素数]」と書きます
#include <stdio.h>
int main(void) {
int scores[5] = {70, 80, 90, 60, 85};
printf("1人目の点数: %d\n", scores[0]);
printf("2人目の点数: %d\n", scores[1]);
printf("3人目の点数: %d\n", scores[2]);
return 0;
}
/* 出力結果
1人目の点数: 70
2人目の点数: 80
3人目の点数: 90
*/
インデックス(添字)は0から始まるので注意!scores[0] が最初の要素、score[4] が最後の要素
配列のよくある使い方
繰り返しと組み合わせてまとめて処理
配列はループと組み合わせるととても便利です
#include <stdio.h>
int main(void) {
int scores[5] = {70, 80, 90, 60, 85};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += scores[i];
}
printf("平均点: %d\n", sum / 5);
return 0;
}
/* 出力結果
平均点: 77
*/
5人分の合計点を繰り返しと配列で計算し、出力時に平均を求めて出力しています
初期化の仕方いろいろ
配列の宣言と同時に中身を決めることができます
int nums[5] = {1, 2, 3, 4, 5}; // 1,2,3,4,5で初期化
int zeros[5] = {0}; // すべて0で初期化
int autoSize[] = {10, 20, 30}; // 要素数は省略OK(3になる)
文字列も実は配列
C言語の文字列は「文字の配列 + 終端文字(’\0’)」になっています
char str[] = "Hello";
printf("%s\n", str);
/* 出力結果
Hello
*/
配列を扱う上での注意
範囲外アクセスはバグの元
score[5] のように要素数を超えるアクセスをすると、意図しない動作(バッファオーバーフロー)になります
要素数は定数で決めると安全
定数で決めておくと、後から変更したくなった際、定数の値だけを変更すればいいので、簡単かつ後から見た人でもわかりやすいという利点があります
#define STUDENTS 5
int scores[STUDENTS];
C言語はサイズを自動拡張しない
C++の std::vector や Python のリストと違って、C言語の配列は固定長
配列が便利な場面
- 点数や売り上げのような「同じ種類のデータ」をまとめたいとき
- ループでまとめて処理したいとき
- 文字列を扱うとき(文字配列)