ExpertiDict

C · Intermediário · Português · Técnico

ponteiro void

/põˈtej.ɾu ˈvɔj.dʒi/substantivo

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

Veja também

Todos os termos de C