Ponteiros - O que são? Para que servem? Onde vivem? De que se alimentam ?
Ponteiro nada mais é que uma variável, assim como int é, como float, double, char etc.E como toda variável, ela serve para armazenar um tipo especial de dado.
No caso dos ponteiros, essas variáveis servem para armazenar endereços de memória.
Vamos usar essas variáveis para apontar para determinados locais de memória, e trabalhar em cima disso.
Por exemplo, se fazemos:
- int count = 1;
A variável count está armazenada em algum local da memória, e lá existe o valor 1.
Poderíamos usar um ponteiro para apontar para o endereço desta variável. Dentro do ponteiro não tem o valor 1, e sim um endereço de memória, que aponta para um local onde o 1 está armazenado.
Quando fazemos uma declaração como esta, estamos separando uma determinada quantidade de Bytes na memória para armazenar aquele valor.
Endereços de memória: operador &
Ainda usando a variável de exemplo, onde usamos count, o C++ substitui por seu valor, 1.Por exemplo:
cout << count+count;
Ele vai imprimir 1+1, ou seja, 2.
Porém, é possível trabalhar com o endereço, o espaço na memória, onde esse número 1 está alocado, ao invés de se trabalhar com o valor que ele armazena, para isso basta usar o símbolo & antes da variável:
- &count
Por exemplo, o código abaixo declara uma variável, armazena um valor.
Depois, imprime o valor da variável, o tanto de memória que foi reservada (através da função sizeof, que retorna o número de Bytes usados) e por fim, mostra seu endereço, usando o operador &:
#include <iostream> using namespace std; int main() { int count=1; cout<<"Valor da variável : "<< count << endl; cout<<"Tamanho de kb : "<< sizeof(count) << endl; cout<<"Endereço de memória: "<< &count <<endl; return 0; }
Veja, em nossa máquina, a variável int usa 4 KB e foi armazenada no endereço:
E na máquina de vocês?
Agora um desafio: quantos KB são usados para armazenar um endereço de memória ?
Escrevam nos comentários.
E o que esse número esquisito, de endereço de memória, tem a ver com ponteiro?
Muito simples: do mesmo jeito que as variáveis int armazenam inteiros, as char armazenam caracteres etc, os ponteiros são variáveis que armazenam esse troço aí: endereços de memória.
Ou seja, o ponteiro vai apontar para um local da memória, e é possível fazer coisas incríveis com essa ideia super simples, como alocação dinâmica de memória, que veremos mais adiante em nosso curso de C++.
o tamanho dado no sizeof, nao seria em bytes?
ResponderExcluir