Solaris 動的トレースガイド

汎用ポインタ

D プログラムでは、ポインタが参照するデータ型を指定せず、汎用ポインタアドレスを表現または操作すると便利な場合があります。汎用ポインタは、void * 型か、組み込みの型の別名 uintptr_t を使って指定します。キーワード void は、特定の型情報が存在しないことを示します。また、型の別名 uintptr_t は、現在のデータモデル内のポインタに適したサイズの符号なし整数型を示します。void * 型のオブジェクトにポインタ演算を適用することはできません。これらのポインタを間接参照するには、まず別の型にキャストする必要があります。ポインタ値に対して整数演算を行いたい場合は、ポインタを uintptr_t 型にキャストします。

void へのポインタは、連想配列の組の式や代入文の右式など、別のデータ型へのポインタが必要なとき、いつでも使用できます。同様に、void へのポインタが必要なときは、任意のデータ型のポインタを使用できます。void 以外のあるポインタ型の代わりに、void 以外の別の型のポインタを使用したい場合は、明示的キャストが必要になります。明示的キャストにより、ポインタを uintptr_t などの整数型に変換するか、これらの整数を適切なポインタ型に変換して戻す必要があります。