間接参照(かんせつさんしょう、)とは、コンピュータのプログラミング、特にプログラミング言語において、値を、値を表すものそのもの直接によってではなく、名前や参照などにより間接的に、指し示すことおよびその参照や、それを参照して操作することである(普通「参照」はreferenceの訳語であるが、この語では普通「間接参照」で一語としている)。また、デリファレンス()とは、そのような参照を、参照して解決し(「参照し下し」)、値を得ることを特に指す語だが、これを指して間接参照ということもある。特にC言語のindirection operator(間接演算子)は、デリファレンスを行う演算子だが、規格の用語では間接参照と呼んでいる。デリファレンスは、大変しばしば「逆参照」と訳されているが、誤訳である。具体的にはたとえば、ある変数に割り当てられたメモリアドレスを得たり、そのアドレスによって、その変数を間接的に操作したりする。以下、C言語を例に説明する。なお、標準規格中では「〜へのポインタ」等として、「アドレス」と直接的に表現するのを避けていることがあるが、ここでは一般的な解釈すなわちポインタはアドレスとする。C言語では、単項&演算子すなわちアドレス演算子を、変数名など左辺値(代入できるとは限らない)を持つような式の前に付けると、その式が表すものを指すアドレスを得られる。このアドレスは、対応するポインタ型の変数に、その値として代入したりできる。単項*演算子すなわち間接演算子(indirection operator)を、前述のアドレスを表す式の前に付けると、それを解決して(間接参照して)、その指しているもの(の左辺値)を得られる。インダイレクションは、実装上のテクニックにとどまるものではなく、たとえばデビッド・ホイーラーによる格言 "All problems in computer science can be solved by another level of indirection." が示すように、問題の解決のためにしばしば必要なものである。 int *a; int x; a = &x;C言語では、ポインタ型の変数などに対しても同様に、それを指すポインタを作ることができる。これを多重間接参照(multiple indirection)、俗にポインタのポインタ(double indirection)と言う。たとえば構造体の配列をソートする時、構造体を直接操作するのではなく、かわりにポインタの配列をソートする、ということをおこなうが、このソート操作の時にポインタを指すポインタを使う。このような強力なポインタの機能がC言語の強みであると同時にエスケープ解析などの静的コード解析を難しくしてもいる。Pascalでも同様に可能であり、初期のMacintoshのAPIにおいて、メモリ管理をしやすくするために、「ハンドル」と呼ぶ、ポインタへのポインタを使用していた(参考: )。さらに、「ポインタのポインタのポインタ」「ポインタのポインタのポインタのポインタ」など、いくらでも作ることが出来るが、ふつう必要がなく、通常は行われない。 int **b;
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。