C · Intermediário · Português · Técnico
ponteiro para ponteiro
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 apontarExemplos
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