デリファレンス
参照先を見に行くよ
簡単に書くよ
デリファレンス(英:dereference)とは
何かを参照しているものの参照先を見に行くこと。
あるいは
プログラミング言語のPerlにおいて使われる表現で、リファレンスの指し示す先の値を取得・参照すること
です。
詳しく書くよ
リファレンスは「何かを参照しているもの」ね。
このリファレンス先の値を実際に見に行く(参照する)のが「デリファレンス」です。
「デリファレンス」という表現は主にプログラミング言語のPerlで出てきます。
よって、このページではPerlのデリファレンスについて説明しますね。
まず前提として、Perlにおける「リファレンス」「デリファレンス」はC言語でいうポインタ(ポインタ変数)のようなやつです。
「ポインタって何ですか?」な人は、まずは、用語「ポインタ変数」の説明を ご覧ください。
遠回りに思えるかもしれませんが、ポインタの概念を押さえておいて損は ありません。
逆に言えば、ポインタの概念が分かっていれば、Perlのリファレンス/デリファレンスを理解するのは楽なはずです。
……C言語のポインタについては、バッチリになりましたでしょうか?
それでは、C言語のポインタを理解している前提で、Perlのリファレンスについて説明します。
C言語のポインタでは
p = &a;
と書くことで、変数「a」の居場所(メモリ上のアドレス)をポインタ変数「p」に入れられました。
同じようにPerlでも
$p = \$a;
と書くことで、変数「$a」の居場所(メモリ上のアドレス)を変数「$p」に入れられるのです。
また、C言語のポインタでは
*p
と書くことで、変数「a」の中身を参照できました。
同じようにPerlでも
$$p
と書くことで、変数「a」の中身を参照できるのです。
Perlにおいて
$p = \$a;
のようにして変数のアドレスを他の変数に入れることを「リファレンス」と言います。
あるいは、変数のアドレスを入れた変数「$p」を「リファレンス」と言ったり、アドレス化した変数「\$a」を指して「リファレンス」と言う場合も あります。
細かいニュアンスは前後の文章によって違ってきたりしますけどね。
いずれにせよ「変数のアドレスを取得する行為」に関連する何かを指す用語です。
そして、いよいよ本題です。
$$p
のようにして、リファレンスの指し示す先の値を取得・参照することを「デリファレンス」と言います。
多少の語弊はありますが
リファレンス→変数をアドレス化
デリファレンス→アドレスから元の変数を復活
と考えると分かりやすいと思います。
リファレンスとデリファレンスはセットで覚えてあげてください。
一言でまとめるよ
まぁ「デリファレンス」って単語が出てきたら「リファレンス先を参照することなんだな~」と お考えください。
おまけ
■訳してみるよ
「de(デ)」という接頭辞が付くと「反対に」とか「離れる」とか「下」とか「外へ」のような意味になります。
「reference(リファレンス)」の意味は「言及」とか「論及」とか「参照」とか「照合」とか「参考」とか「引用文」とか「参考文献」とか「参考図書」とかです。
何となく くっつけると
反対の参照
となります。






