多重間接参照
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/11 16:45 UTC 版)
C言語では、ポインタ型の変数などに対しても同様に、それを指すポインタを定義することができる。これを多重間接参照 (multiple indirection) と呼ぶ。ポインタへのポインタは二重間接参照 (double indirection) と呼ばれ、俗にダブルポインタとも言う。たとえば構造体Tや文字列char[]の配列をソートするとき、構造体や文字列のコピーにかかるコストを避けるため、構造体や文字列の配列を直接操作するのではなく、かわりに構造体を指すポインタの配列や、文字列先頭要素を指すポインタの配列をソートする、ということを行なうことがある。このソート操作の際に、ポインタを指すポインタを使う。このような強力なポインタの機能がC言語の強みであると同時に、エスケープ解析などの静的コード解析を難しくしてもいる。 Pascalでも同様に可能であり、初期のMacintoshのAPIにおいて、メモリ管理をしやすくするために、「ハンドル」と呼ぶ、ポインタへのポインタを使用していた(参考: en:Mac OS memory management#Fragmentation)。 さらに、「ポインタのポインタのポインタ」「ポインタのポインタのポインタのポインタ」など、いくらでも定義することができるが、通常は必要がないため利用されない。 ポインタへのポインタの例 int **pp;int *p;int x;p = &x;pp = &p;**pp = 10;
※この「多重間接参照」の解説は、「間接参照」の解説の一部です。
「多重間接参照」を含む「間接参照」の記事については、「間接参照」の概要を参照ください。
- 多重間接参照のページへのリンク