Guía de seguimiento dinámico de Solaris

Punteros genéricos

A veces resulta útil representar o manipular una dirección de puntero genérico en un programa en D sin especificar el tipo de datos a los que el puntero hace referencia. Los punteros genéricos se pueden especificar utilizando el tipo void *, donde la palabra clave void representa la ausencia de información de tipo específica o utilizando el alias de tipo incorporado uintptr_t, que utiliza un alias de tipo de entero sin signo con un tamaño apropiado para un puntero del modelo de datos actual. Puede no aplicar aritmética de punteros a un objeto de tipo void *, y a estos punteros no se les puede dejar de hacer referencia sin convertirlos primero en otro tipo. Puede convertir un puntero al tipo uintptr_t cuando necesite realizar operaciones aritméticas de enteros en un valor de puntero.

Se pueden utilizar punteros a void en cualquier contexto donde sea necesario un puntero a otro tipo de datos, como una expresión tupla de matrices asociativas o la parte derecha de una instrucción de asignación. De forma similar, se puede utilizar un puntero a cualquier tipo de datos en un contexto donde sea necesario un puntero a void. Para utilizar un puntero a un tipo no void en lugar de otro tipo de puntero no void, se requiere una conversión explícita. Siempre debe utilizar conversiones explícitas para convertir punteros a tipos enteros, como uintptr_t, o para volver a convertir estos enteros al tipo de puntero adecuado.