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.
- Crie o arquivo
endereco_neo.cppna pastasrc/:
#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
- Abra o terminal integrado.
- Compile:
g++ endereco_neo.cpp -o endereco_neo - 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)