Ajude nosso projeto a se manter online.

Ponteiros em C++ - O que são e Endereços de Memória (operador &)

Neste tutorial introdutório de nossa seção sobre ponteiros em C++, vamos aprender o básico deste importante conceito.

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 kiloBytes 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 kBytes 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:

Endereço de memória em C++

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++.

Nenhum comentário:

Postar um comentário