
はじめてのC言語 | 第15回
配列とポインタは、どこでつながるのか
C言語では、配列や文字列を扱うとき、
「場所(ロケーション)」という考え方が、何度も顔を出します。
配列は「並んだ箱」。
ポインタは「箱の場所を指す札」。
最初は、まったく別の道具のように見えるこの2つですが、
あるところから、同じ景色を見ていることに気づきます。
この回では、その瞬間を、ゆっくり確認していきましょう。
配列の正体は「先頭の場所」から始まる
まずは、配列を思い出します。
int a[4] = {10, 20, 30, 40};これは、
- 箱が4つ、横に並び
- 左から順に値が入っている
状態でした。
イメージすると、こんな並びです。
+----+----+----+----+
| 10 | 20 | 30 | 40 |
+----+----+----+----+ここで、ひとつ大切なポイントがあります。
配列名 a の正体
配列名 a は、
箱4つすべてを「持ち歩いている」わけではありません。
実体としては、
箱4つ分の場所(メモリ)を確保しています。
しかし、プログラムの中で名前 a を使うとき、a はこう振る舞います。
「私は、ここ(先頭)から始まっていますよ」
つまり配列名は、並びの入口を示す看板(アドレス)として使われるのです。
カフェのバックヤードで言えば、
- 棚そのものではなく
- この棚は、ここから始まっています
という札を指し示している状態です。
「1つ右へ進む」という感覚
配列が「並んだ箱」だとすると、
そこには自然な流れがあります。
- 先頭
- その右
- さらに右
ポインタを使うと、この流れをそのまま表現できます。
int *p = a;これは、
- 配列の先頭の場所を
- ポインタ
pが指している
という意味です。
ここで、
p++;と書くと、
- 値が増えるのではなく
- 指している場所が、ひとつ右へ進む
という動きになります。
箱は動いていません。
動いているのは、ロケーション札(p)だけです。
配列で見ていた景色
配列では、こんな書き方をしていました。
a[0]
a[1]
a[2]これは、
- 先頭の箱
- その次の箱
- さらに次の箱
を、番号で指定して見ています。
配列は、「何番目の箱か」という視点で世界を見ています。
ポインタで見ていた景色
一方、ポインタではこう書きます。
*p
*(p + 1)
*(p + 2)こちらは、
- 今いる場所
- そこから1つ右
- さらに1つ右
と、場所をたどって見ています。
番号は出てきません。
あるのは、「今どこにいるか」という感覚だけです。
同じ場所を、違う言葉で見ていただけ
ここで、ひとつの気づきが生まれます。
a[1]と
*(p + 1)この2つは、同じ箱を指しています。
見ている世界は同じ。
違うのは、見方だけです。
- 配列:番号で見る
- ポインタ:場所から進んで見る
別々の道具に見えていたものが、
実は 同じ並び、同じ箱 を指していました。
これが、「配列とポインタが、同じ景色に見える瞬間」です。
なぜ、別々のものに見えてしまうのか
初心者のころは、
- 配列は
[ ] - ポインタは
*や+
と、記号がまったく違って見えます。
そのため、「配列とポインタは別の仕組みだ」と感じてしまいます。
でも、裏側ではずっと同じことをしています。
- 連続した場所が並び
- 先頭を基準に
- どれだけ進むか
この世界を、
- 配列は「番号」で
- ポインタは「移動」で
表現していただけでした。
文字列でも、同じ景色を見る
文字列も、本質は同じです。
char s[] = "ABC";中身は、
'A' 'B' 'C' '\0'という、並んだ箱です。
だから、こんなコードが自然に書けます。
char *p = s;
while (*p != '\0') {
p++;
}これは、
- 先頭の場所から始めて
- ひとつずつ右へ進み
- 終わりの印(
\0)まで歩く
という処理です。
配列を番号で見るか、ポインタで歩くか。
やっていることは、同じです。
この感覚があると、何が変わるか
この「同じ景色」が見えるようになると、
- for文の意味が見える
- 文字列操作の理由が分かる
- 関数に配列を渡す意味が分かる
- 「なぜ危険なのか」を予測できる
ようになります。
C言語が、記号の集まりではなく、場所を扱う言葉に見えてきます。
まとめ
- 配列とポインタは、別々の道具
- でも、同じ世界を指している
- 配列は「番号で見る」
- ポインタは「場所からたどる」
- 見方が違うだけで、景色は同じ
このことに気づいたとき、C言語の中が、少し静かに整理されます。
次は、「なぜ配列を関数に渡すと、姿が変わるのか」
その不思議を、同じ景色から見ていきましょう ☕
さらに学びたいあなたへ
📘 用途ごとに選ぶ Linux のおすすめ本

