Ponteiro e endereço de memória em C++
Quando uso o & na frente de uma variável "comum" consigo saber qual é o seu endereço na memória.
cout << "Endereco de memoria de variavel:" << &variavel << endl;
- Irá mostrar algo como :
E para mostrar o endereço de um ponteiro usamos da mesma forma, sem asterisco, apenas o nome do ponteiro e o & na frente.
cout << "Endereco de memoria de ponteiro: " << &ponteiro << endl;
- Irá mostrar algo como :
Ao mostrar somente o nome do ponteiro, será exibido o endereço ao qual o ponteiro aponta, ou seja, o mesmo endereço da variável referenciada ao ponteiro.
cout << "Endereco para onde o ponteiro aponta: " << ponteiro << endl;
- Irá mostrar algo como :
Para saber o conteúdo da variável que o ponteiro referencia, faz-se o uso do asterisco antes do nome do ponteiro.
cout << "Conteudo de variavel atraves de ponteiro " << *ponteiro << endl;
- Neste caso irá mostrar 9, por que minha variável é inicializada com este valor.
Outra forma de acessar o conteúdo da variável é usando **&ponteiro, iniciando da direita para a esquerda o &ponteiro referencia o endereço do ponteiro,*&ponteiro vai para o endereço da variável que foi passado ao ponteiro e **&ponteiro irá ao conteúdo da variável.
cout << "Conteudo da variavel atraves do ponteiro " << **&ponteiro << endl;
- Também irá mostrar 9.