C · Intermediário · Português · Técnico
ponteiro void
Ponteiro genérico, void *, que pode guardar o endereço de qualquer tipo de dado, mas não pode ser desreferenciado nem usado em aritmética sem antes ser convertido.
Onde usar
Aparece em funções genéricas como malloc, memcpy e qsort, e em callbacks com dados do usuário. Em C a conversão de e para void * é implícita, ao contrário de C++.
Em código
void zera(void *dst, size_t n) {
unsigned char *p = dst; // implícito
while (n--)
*p++ = 0;
}Exemplos
O malloc devolve um ponteiro void, que converte sozinho para o tipo certo.
Para ler esse ponteiro void, converta antes para unsigned char *.
Cuidado
Confundir com void como tipo de retorno: void * é um ponteiro de verdade, com tamanho e endereço.
Sinônimos
ponteiro genérico