Professional Documents
Culture Documents
net
Pg. 1 de 3
www.tiexpert.net
system("pause"); return EXIT_SUCCESS; }
Pg. 2 de 3
Para entender melhor o acesso indireto que o ponteiro executa, vejamos o diagrama abaixo.
Este diagrama demonstra o que cada um dos asteriscos representa. Sabendo disso possvel alterar tanto o valor final da varivel quanto o endereo apontado pelos ponteiros intermedirios. Vejamos a exemplificao abaixo. #include <iostream> using namespace std; int main (void) { float var1 = 25.5; float var2 = 72.8; float *ptr; float **ptrPtr; ptr = &var1; ptrPtr = &ptr; cout << "O valor final de ptrPtr e " << **ptrPtr << endl; cout << "Pois o endereco de ptr e " << ptr << endl; *ptrPtr = &var2; //novo endereo no ponteiro intermedirio cout << "\nO valor final de ptrPtr e " << **ptrPtr << endl; cout << "Pois o endereco de ptr e " << ptr << endl; system("pause"); return EXIT_SUCCESS; } No cdigo acima podemos perceber a troca de um ponteiro intermedirio. A princpio atribuimos o endereo da varivel var1 ao ponteiro ptr. Depois, atribuimos o endereo do ponteiro ptr ao ponteiro ptrPtr. Na primeira vez que mandamos imprimir **ptrPtr (Importante! Note os dois asteriscos) ser apresentado o valor contido em var1, porque ptrPtr acessa var1 indiretamente pelo ponteiro ptr. Quando fazemos a operao *ptrPtr = &var2;, na verdade, no estamos alterando o valor contido em var1, mas o endereo contido no ponteiro ptr, porque usamos apenas um asterisco em ptrPtr. Ou seja, usando apenas um asterisco acessaremos o ponteiro, no o valor apontado pelo ponteiro. Vejamos:
http://www.tiexpert.net/programacao/c/ponteiro-para-ponteiro.php
www.tiexpert.net
Pg. 3 de 3
Esse astersco representa exatamente o ponteiro intermedirio. Portanto, agora o ponteiro ptr no aponta mais para var1, ele aponta para var2. Na segunda vez que imprimimos o valor de **ptrPtr no aparecer o valor de var1, mas o valor de var2, porque o endereo contido no ponteiro intermedirio ptr foi alterado para apontar para var2.
Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
http://www.tiexpert.net/programacao/c/ponteiro-para-ponteiro.php