Capítulo 10: Introdução aos Ponteiros 🕶️💊
Neste capítulo, vamos entrar no conceito mais famoso e temido da linguagem 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.cna pastasrc/:
#include <stdio.h>
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
printf("Valor de Neo: %d\n", neo);
// O %p exibe o endereço de memória em hexadecimal
printf("Endereco de Neo na Matrix: %p\n", &neo);
printf("Valor guardado no Ponteiro: %p\n", ponteiro_neo);
// O operador '*' (quando usado fora da declaração) pega o valor que está no endereço
printf("Valor apontado pelo Ponteiro: %d\n", *ponteiro_neo);
return 0;
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
gcc endereco_neo.c -o endereco_neo - Execute:
./endereco_neo
Resultado Esperado:
Valor de Neo: 101
Endereco de Neo na Matrix: 000000000061FE14 (o valor pode mudar a cada execução)
Valor guardado no Ponteiro: 000000000061FE14
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.c que tenha uma variável int pílula = 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.c
#include <stdio.h>
int main() {
int pilula = 0;
int *p;
p = &pilula;
// Mudando o valor de 'pilula' através do ponteiro
*p = 1;
printf("Escolha da pilula (0-Azul / 1-Vermelha): %d\n", pilula);
if (pilula == 1) {
printf("Voce escolheu a pilula vermelha. Bem-vindo ao mundo real.\n");
}
return 0;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)