Capítulo 10: Introdução aos Ponteiros 🕶️💊

Neste capítulo, vamos entrar no conceito mais famoso e temido da linguagem C e C++: os Ponteiros! Vamos usar o tema Matrix para entender como eles funcionam.


📖 O que são Ponteiros?

Um ponteiro é uma variável cujo valor é o endereço de memória de outra variável. Em vez de guardar um dado (como o número 42), ele guarda o lugar onde esse dado está guardado na memória ram do computador.

Tomar a Pílula Vermelha significa ver como a Matrix (memória) realmente funciona!


📖 Exemplo Guiado: Endereço do Neo

Vamos criar uma variável para o Neo e usar um ponteiro para descobrir onde ela está na memória.

  1. Crie o arquivo endereco_neo.cpp na pasta src/:
#include <iostream>
 
using namespace std;
 
int main() {
    int neo = 101; // Valor da variável
    int *ponteiro_neo; // Declarando um ponteiro para inteiro
 
    ponteiro_neo = &neo; // O operador '&' pega o endereço de neo
 
    cout << "Valor de Neo: " << neo << endl;
    
    // O endereço de memória é exibido em hexadecimal
    cout << "Endereco de Neo na Matrix: " << &neo << endl;
    cout << "Valor guardado no Ponteiro: " << ponteiro_neo << endl;
    
    // O operador '*' (quando usado fora da declaração) pega o valor que está no endereço
    cout << "Valor apontado pelo Ponteiro: " << *ponteiro_neo << endl;
 
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: g++ endereco_neo.cpp -o endereco_neo
  3. Execute: ./endereco_neo

Resultado Esperado:

Valor de Neo: 101
Endereco de Neo na Matrix: 0x61fe14 (o valor pode mudar a cada execução)
Valor guardado no Ponteiro: 0x61fe14
Valor apontado pelo Ponteiro: 101

📊 Ilustração Visual: Ponteiro na Memória

Veja como o ponteiro aponta para a variável:

graph LR
    subgraph "Memória RAM"
    A["Variável: neo <br> Valor: 101 <br> Endereço: 0x61FE14"]
    B["Ponteiro: ponteiro_neo <br> Valor: 0x61FE14"]
    end
    B -->|Aponta para| A

🛠️ Prática Obrigatória 1: Alterando Valores via Ponteiro

Se mudarmos o valor através do ponteiro, a variável original muda! Crie um programa chamado mudar_valor.cpp que tenha uma variável int pilula = 0. Crie um ponteiro para ela e, usando o ponteiro (*ponteiro = 1), mude o valor da pílula para 1. Exiba o valor da variável original no final.


🔑 Gabarito de Código

Prática 1: mudar_valor.cpp

#include <iostream>
 
using namespace std;
 
int main() {
    int pilula = 0;
    int *p;
 
    p = &pilula;
    
    // Mudando o valor de 'pilula' através do ponteiro
    *p = 1; 
 
    cout << "Escolha da pilula (0-Azul / 1-Vermelha): " << pilula << endl;
    
    if (pilula == 1) {
        cout << "Voce escolheu a pilula vermelha. Bem-vindo ao mundo real." << endl;
    }
 
    return 0;
}

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo