🧩 Exercícios: Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
Spec Sistemas Com Cpp • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 08.1 — Declaração de Ponteiro e Desreferenciação em C++
Contexto: Declaração de Ponteiro e Desreferenciação em C++ no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.
Requisitos de Execução:
- Manipular memória apontada por ponteiro com
*ptre inspecionar endereços no formato C++.
Resultado Esperado
Ponteiro bruto manipulando variável no stack.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_08_1_SeuNome - Envie na tarefa:
Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
int main() {
int valor{100};
int* ptr{&valor};
std::cout << "Endereco: " << ptr << " | Valor: " << *ptr << std::endl;
*ptr = 250;
std::cout << "Novo valor: " << valor << std::endl;
return 0;
}
🔍 Nível 2: Prática
Problema 08.2 — Aritmética de Ponteiros em Arrays Nativos
Contexto: Aritmética de Ponteiros em Arrays Nativos no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.
Requisitos de Execução:
- Percorrer array através de ponteiros
*(ptr + i)e demonstrar a distância em bytes entre elementos.
Resultado Esperado
Array percorrido via aritmética de ponteiros.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_08_2_SeuNome - Envie na tarefa:
Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
int main() {
int dados[]{10, 20, 30, 40};
int* p = dados;
for (int i = 0; i < 4; i++) {
std::cout << "Elemento " << i << ": " << *(p + i) << std::endl;
}
return 0;
}
⚡ Nível 3: Integração
Problema 08.3 — Ponteiros Nulos com nullptr e Proteção contra Desreferenciação Inválida
Contexto: Ponteiros Nulos com nullptr e Proteção contra Desreferenciação Inválida no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.
Requisitos de Execução:
- Utilizar literal fortemente tipado
nullptrverificando a validade antes do acesso à memória.
Resultado Esperado
Acesso protegido contra Null Pointer Dereference.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_08_3_SeuNome - Envie na tarefa:
Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
void executar(int* p) {
if (p != nullptr) {
std::cout << "Executando com valor: " << *p << std::endl;
} else {
std::cout << "Ponteiro nulo recebido com seguranca." << std::endl;
}
}
int main() {
executar(nullptr);
return 0;
}
🏆 Nível 4: Desafio Corporativo
Problema 08.4 — Ponteiros Opaque (PIMPL Idiom) para Encapsulamento Total de Headers
Contexto: Ponteiros Opaque (PIMPL Idiom) para Encapsulamento Total de Headers no contexto de Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros.
Requisitos de Execução:
- Implementar o idioma PIMPL (Pointer to Implementation) para isolar detalhes de implementação e acelerar compilação.
Resultado Esperado
Idioma PIMPL implementado desacoplando headers corporativos.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_08_4_SeuNome - Envie na tarefa:
Atividade Cap 08 - Ponteiros Brutos, Endereçamento e Aritmética de Ponteiros
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <memory>
class MotorEngine {
struct Impl;
std::unique_ptr<Impl> pimpl;
public:
MotorEngine();
~MotorEngine();
void rodar();
};
struct MotorEngine::Impl {
void executar() { std::cout << "Motor interno rodando via PIMPL.\n"; }
};
MotorEngine::MotorEngine() : pimpl(std::make_unique<Impl>()) {}
MotorEngine::~MotorEngine() = default;
void MotorEngine::rodar() { pimpl->executar(); }
int main() {
MotorEngine m;
m.rodar();
return 0;
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |