Ponteiros em C++

Instanciando Ponteiros:


Existem 3 formas de instanciar um ponteiro em C++:

int* pointer;    
int *pointer;
int * pointer;


Como não instanciar um ponteiro (jeito errado):

*int pointer;
int pointer*;
int pointer *;

O "*" indica que pointer é uma variável do tipo ponteiro. Neste Caso, um ponteiro para variáveis do tipo int.
O ponteiro é uma variável cujo o valor é o endereço de outras variável. Sendo esse endereço direto da posição de memória.
Variável "ptr" do tipo int (declaração : int* ptr) apontando para o endereço de memória da variável "a".
Para isso, "ptr" recebe o endereço de memória de "a" (ptr = &a).



Trabalhando com Ponteiros na prática:


int* pointer;  
int counter = 10; 
pointer = &counter; //a variável ponteiro recebe o endereço de memória de counter
cout << "*pointer = " << *pointer << "\n"; //a saída será *pointer = 10
(*pointer)++;                              //incrementa +1 em counter 
cout << "*pointer = " << *pointer << "\n"; //saída = 11
cout << "counter = " << counter << "\n";   //saída = 11
cout << "&pointer = " << &pointer << "\n"; //saída = endereço de memória de pointer
cout << "&counter = " << &counter << "\n"; //saída = endereço de memória de counter
cout << "counter = " << counter << "\n";  //saída = valor da variável counter
cout << "*&counter = " << *&counter << "\n"; //saída valor da variável counter.


Explicando o código acima:


int* pointer;  
int counter = 10; 
pointer = &counter; 
O "&" representa o endereço direto da posição de memória onde está armazenada a variável estática counter.
Pointer recebe este endereço (pointer é uma referência).


cout << "*pointer = " << *pointer << "\n";
*pointer é a forma de acessarmos a variável apontada por pointer ("*" é um operador de desreferência)
Neste caso, pointer aponta para a variável counter.
Escreve na saída o valor da variavel que pointer aponta.
No caso desse exemplo o valor é = 10.


(*pointer)++; 
A variável apontada por pointer equivale a counter.
Incrementamos esta variável.


cout << "&pointer = " << &pointer << "\n";
Escreve na saída o endereço de memória da variável pointer.
Por exemplo: 0x61ff1c 


cout << "&counter = " << &counter << "\n";
Escreve na saída o endereço de memória da variável counter.
Por exemplo: 0x61ff18 


cout << "counter = " << counter << "\n";  
Escreve na saída o valor da variável counter.
No caso do exemplo, o valor de counter é = 11, pois houve o incremento  em (*pointer)++.


cout << "*&counter = " << *&counter << "\n";
Escreve na saída o valor da variável que está no endereço de counter (ela mesma).
No caso desse exemplo é = 11.



Comentários

Postagens mais visitadas deste blog

Método da Interpolação por Eliminação Gaussiana em Scilab

Cálculo do Erro para Interpolação em Scilab

Método de Interpolação de Lagrange em Scilab