CURSO DE C
Um ponteiro para um ponteiro é como se você anotasse o endereço de um papel que tem o endereço da casa do seu amigo. Podemos declarar um ponteiro para um ponteiro com a seguinte notação:
tipo_da_variável **nome_da_variável;
Algumas considerações: **nome_da_variável é o conteúdo final da variável apontada; *nome_da_variável é o conteúdo do ponteiro intermediário.
No C podemos declarar ponteiros para ponteiros para ponteiros, ou então, ponteiros para ponteiros para ponteiros para ponteiros (UFA!) e assim por diante. Para fazer isto (não me pergunte a utilidade disto!) basta aumentar o número de asteriscos na declaracão. A lógica é a mesma.
Para acessar o valor desejado apontado por um ponteiro para ponteiro, o operador asterisco deve ser aplicado duas vezes, como mostrado no exemplo abaixo:
#include <stdio.h>
int main()
{
float fpi = 3.1415, *pf, **ppf;
pf = &fpi;
/*
pf armazena o endereco de fpi */
ppf = &pf;
/*
ppf armazena o endereco de pf */
printf("%f", **ppf); /* Imprime
o valor de fpi */
printf("%f", *pf);
/* Tambem imprime o valor de fpi */
return(0);
}
AUTO AVALIAÇÃO
Veja como você está.
Verifique o programa abaixo. Encontre o seu erro e corrija-o para que escreva o
numero 10 na tela.
#include <stdio.h>
int main()
{
int x, *p, **q;
p = &x;
q = &p;
x = 10;
printf("\n%d\n", &q);
return(0);
}
Curso de C do CPDEE/UFMG - 1996 - 1999