⚡ Cap 13: Ponteiros & Passagem por Referência
Especialização em Engenharia de Sistemas com Linguagem C (C17/C23)
🗺️ Slide 1: O que é um Ponteiro?
graph LR
A["Ponteiro ptr\n(Guarda 0x1000)"] -->|Aponta para| B["Variável x (no end 0x1000)\nConteúdo: 42"]
style A fill:#0284c7,stroke:#38bdf8,color:#ffffff
style B fill:#059669,stroke:#34d399,color:#ffffff
- Tamanho Fixo: 8 bytes em arquiteturas de 64 bits (x86_64 / ARM64).
&: Obtém o endereço de uma variável na RAM.*: Desreferencia (acessa/altera) o valor apontado.
🔄 Slide 2: Passagem por Referência (swap)
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
- Invocação:
swap(&x, &y);(passa os endereços damain). - Permite alterar variáveis do chamador e retornar múltiplos valores.
🔒 Slide 3: Qualificadores const com Ponteiros
const int *p: O dado apontado é imutável (*p = 10❌).int * const p: O endereço do ponteiro é imutável (p = &outro❌).const int * const p: Ambos são imutáveis.
🛡️ Slide 4: Proteção contra NULL Dereference (CERT C)
int *ptr = NULL; // Sempre inicialize!
if (ptr != NULL) {
*ptr = 42; // Acesso 100% seguro contra SIGSEGV
}
- Teste sempre
ptr != NULLantes de desreferenciar.
📋 Resumo da Aula & Próximos Passos
- Revise os códigos de exemplo deste capítulo.
- Teste seus conhecimentos no Quiz Formativo.
- Pratique os exercícios em 4 níveis de complexidade.
🧭 Navegação Rápida
| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Teoria | Ver Slides | Fazer Quiz | Ver Exemplos | Praticar Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim