ExpertiDict

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

ponteiro para ponteiro

/põˈtej.ɾu ˈpa.ɾɐ põˈtej.ɾu/substantivo

Ponteiro cujo valor é o endereço de outro ponteiro, declarado com dois asteriscos. Serve para alterar um ponteiro dentro de uma função e para vetores de strings, como argv.

Onde usar

Se uma função precisa mudar para onde o ponteiro do chamador aponta, ela recebe o endereço desse ponteiro. char **argv é o exemplo mais comum.

Em código

void aloca(int **out) {
  *out = malloc(sizeof **out);
}
// int *p;
// aloca(&p); // p passa a apontar

Exemplos

A função aloca recebe um ponteiro para ponteiro para devolver o bloco.

O argv é um ponteiro para ponteiro de char.

Cuidado

Passar só char *p não deixa a função trocar o ponteiro do chamador, porque o ponteiro em si é copiado.

Sinônimos

ponteiro duplo

Veja também

Todos os termos de C