C言語配列完全マスター:宣言・初期化・よくある操作
C言語配列完全マスター
実践的な例、ベストプラクティス、安全ガイドラインとともに、C言語配列の宣言、初期化、操作方法を発見してください。

C言語では、配列は同じ型の複数の値を格納する連続したメモリブロックです。例えば100個の整数を保持するには:
int data[100];
配列の宣言
以下の構文を使用します:
データ型 配列名[配列サイズ];
例:
float mark[5];
ここでは、markは5つのfloat値を格納できます。宣言後はサイズと型が固定されます。
要素へのアクセス
配列インデックスは0から始まります。サイズnの配列では、最後の要素はarray[n-1]です。例:
mark[0] // 最初の要素
mark[4] // サイズ5の場合の最後の要素

重要なポイント:
- 最初のインデックスは1ではなく0
float(4バイト)の場合、後続インデックスごとにアドレスが4増加array[n-1]を超えるアクセスは未定義動作を招くため絶対に避ける
配列の初期化
宣言時に初期化:
int mark[5] = {19, 10, 8, 17, 9};
またはコンパイラにサイズを推測させる:
int mark[] = {19, 10, 8, 17, 9};
結果の値:
mark[0] = 19
mark[1] = 10
mark[2] = 8
mark[3] = 17
mark[4] = 9

要素の変更
int mark[5] = {19, 10, 8, 17, 9};
mark[2] = -1; // 3番目の要素
mark[4] = 0; // 5番目の要素
入力と出力
配列要素への読み込み:
scanf("%d", &mark[2]); // 3番目の要素
scanf("%d", &mark[i-1]); // i番目の要素(1ベース)
要素の出力:
printf("%d", mark[0]); // 最初
printf("%d", mark[2]); // 3番目
printf("%d", mark[i-1]); // i番目
例1: 配列の入出力
#include <stdio.h>
int main() {
int values[5];
printf("5つの整数を入力: ");
for (int i = 0; i < 5; ++i) {
scanf("%d", &values[i]);
}
printf("整数を表示:\n");
for (int i = 0; i < 5; ++i) {
printf("%d\n", values[i]);
}
return 0;
}
出力
5つの整数を入力: 1 -3 34 0 3 整数を表示: 1 -3 34 0 3
例2: 平均値の計算
#include <stdio.h>
int main() {
int marks[10], n, sum = 0;
printf("要素数を入力: ");
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
printf("数値%dを入力: ", i + 1);
scanf("%d", &marks[i]);
sum += marks[i];
}
int average = sum / n;
printf("Average = %d", average);
return 0;
}
出力
要素数を入力: 5 数値1を入力: 45 数値2を入力: 35 数値3を入力: 38 数値4を入力: 31 数値5を入力: 49 Average = 39
範囲外アクセスに注意
配列が10要素しかないのにtestArray[12]にアクセスすると未定義動作(クラッシュ、データ破損、サイレントエラー)を引き起こします。アクセス前に必ずインデックスを検証してください。
多次元配列
ここまで1次元配列を扱いました。次回のチュートリアルでは、多次元配列(配列の配列)とその効果的な使い方を探ります。
C言語
- ボールグリッドアレイ(BGA)完全ガイド:高密度PCB技術のすべて
- C# 配列をマスターする:宣言、初期化、操作
- C# ジャグ配列をマスターする:宣言、初期化、アクセス
- C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
- C言語で1次元・2次元配列を関数に渡す方法 – 実践ガイド
- C言語における配列とポインタの関係を理解する
- C++配列を徹底解説:宣言、初期化、ポインタ活用テクニック
- C++動的配列の確保をマスター:コード例付き実践ガイド
- MATLAB:多次元配列と特殊配列をマスターする
- Java配列コピー技法:包括的ガイド
- Java配列チュートリアル:宣言、生成、初期化の完全ガイド