第6回|ポインタってなに?ミナちゃんが出会う“矢印の魔法”

当サイトでは、コンテンツの一部に広告を掲載しています。
第6回|ポインタってなに?ミナちゃんが出会う“矢印の魔法”

はじめての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 のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次