Guia de rastreamento dinâmico Solaris

Ponteiros genéricos

Às vezes, é útil representar ou manipular um endereço de ponteiro genérico em um programa em D sem especificar o tipo de dados referenciado pelo ponteiro. Os ponteiros genéricos podem ser especificados por meio do tipo void *, onde a palavra-chave void representa a ausência de informações de tipo específico, ou por meio do alias de tipo interno uintptr_t , que é o alias de um tipo de inteiro não assinado do tamanho apropriado para um ponteiro no modelo de dados atual. Você não pode aplicar a aritmética de ponteiro a um objeto do tipo void *, e esses ponteiros não podem ter a referência cancelada sem serem convertidos primeiro em outro tipo. Você pode converter um ponteiro para o tipo uintptr_t quando precisar realizar uma aritmética de inteiro no valor do ponteiro.

Os ponteiros para void podem ser usados em qualquer contexto em que é necessário um ponteiro para outro tipo de dados, tal como uma expressão de tupla de matriz associativa ou o lado direito de uma declaração de atribuição. Similarmente, um ponteiro para qualquer tipo de dados pode ser usado em um contexto em que é necessário um ponteiro para void . Para usar um ponteiro para um tipo não-void em vez de outro tipo de ponteiro não-void, é necessária uma conversão explícita. Você deve sempre usar conversões explícitas para converter ponteiros em tipos de inteiros, tal como uintptr_t, ou para reconverter esses inteiros para o tipo de ponteiro apropriado.