
はじめてのC言語 | 第6回
ポインタって、なに?
前回までで、ミナちゃんは
配列という「ならべる箱」を使えるようになりました。
同じ種類の材料を、順番に並べておける。
くり返しで取り出せる。
キッチンの作業が、ぐっと楽になりました。
でも、C言語のキッチンには、もうひとつ不思議な道具があります。
それが ポインタ です。
ポインタは「場所を指さす道具」
ポインタを、いきなりむずかしく考えなくて大丈夫です。
まずは、こう思ってください。
ポインタは、
データそのものではなく、“データが置いてある場所”を持つ道具です。
たとえば、材料が入った棚があります。
- 材料そのもの(砂糖や塩)
- その材料が置いてある棚の位置(棚番号や引き出しの場所)
C言語のポインタは、後者のほうです。
「材料をください」ではなく、
「その材料が置いてある場所はここです」と教える感じです。
どうして「場所」が大事なの?
ミナちゃんは、少し不思議に思います。
「値がほしいなら、値を渡せばいいのに。
どうして“場所”なんて渡すの?」
ここが、C言語らしいポイントです。
C言語は、ときどき
- 大きなデータをまるごとコピーしたくない
- 相手の中身を“直接”書き換えたい
- 配列や文字列を効率よく扱いたい
そんな場面に出会います。
そのとき役立つのが、ポインタです。
「これ、コピーを渡します」ではなく、
「本体はここにあるよ。必要なら直接見てね」
という渡し方ができるのです。
まずは超シンプルに見てみよう
ポインタには、よく出てくる記号が2つあります。
&(アンド):場所(アドレス)を取り出す*(アスタリスク):その場所にある中身を見る/触る
小さな例を1つだけ置きますね。
“雰囲気”が伝われば十分です。
int x = 10;
int *p = &x;
*p = 20; // xの中身を、場所経由で書き換えるこのコードで起きていることは、こうです。
xは「材料そのもの」pは「材料が置いてある場所のメモ」*p = 20は「その場所にある材料を、別のものに入れ替える」
つまり、ポインタは “矢印の先の中身”に触れる道具なんですね。
ミナちゃんが出会う「矢印の魔法」
ミナちゃんは、キッチンの奥で
小さな札を見つけました。
そこには、材料の名前ではなく、
棚の位置だけが書かれています。
「……これ、材料じゃなくて、場所だ」
最初は少し怖い。
でも、ユニ先生が言います。
「場所がわかるとね。
“そこにあるもの”を、あとから自由に扱えるんだよ」
ミナちゃんは、気づきます。
ポインタは、ずるい魔法ではなくて、
機械のキッチンで本気の作業をするための道具なんだ、と。
まとめ|この回でわかったこと
ここまでで、
ポインタが「特別な魔法」ではなく、
C言語らしい考え方だということが、
少し見えてきたかもしれません。
最後に、
この回で大切だったポイントを、
落ち着いて振り返ってみましょう。
- ポインタは「値」ではなく「場所(アドレス)」を持つ
&は場所を取り出す記号*はその場所の中身に触る記号- ポインタがあると「コピーせずに渡す」「直接書き換える」ができる
- C言語が配列や文字列を扱うとき、ポインタの考え方がよく出てくる
次回予告
次回は、
Cのプログラムをターミナルから動かしてみよう です。
これまで書いてきたC言語のコードを、
ターミナルから実行して、自分の手で動かしてみます。
キッチンの中で作ったものを、実際に外へ出して使う。
そんな感覚に近い回になります。
C言語とUNIXが、どんなふうにつながっているのか。
その関係を、体験として確かめてみましょう。
さらに学びたいあなたへ
📘 用途ごとに選ぶ Linux のおすすめ本

