Pular para conteúdo

Exercícios: Aula 10 – Ponteiros (Introdução) 📝

Explore a manipulação direta da memória e entenda como as variáveis são armazenadas.


🟢 Nível: Básico

1. O Apontador

Crie um programa que declare uma variável inteira e um ponteiro para ela. Imprima o valor da variável acessando-a diretamente e, em seguida, acessando-a através do ponteiro.

2. Endereço Físico

Escreva um programa que peça um número ao usuário e imprima qual o endereço de memória (em hexadecimal) onde esse número foi guardado pelo sistema.


🟡 Nível: Intermediário

3. Alteração Indireta

Crie um programa com uma variável float preco = 100.00;. Declare um ponteiro para essa variável e use o ponteiro para aplicar um desconto de 15% direto na memória. Imprima o preço final acessando a variável original.

4. Tamanho dos Tipos

Use o operador sizeof() para descobrir e imprimir quantos bytes ocupam na memória um int, um float, um double e um char. Mostre também o endereço inicial de cada um deles após declará-los.


🔴 Nível: Desafio

5. Função com Referência

Escreva uma função void atualizarValores(int *a, int *b) que receba dois endereços. A função deve substituir o valor de A pela soma de A+B e o valor de B pela subtração de A-B. Teste a função no main imprimindo os resultados.

Exemplo: Entrada: A=10, B=5 Saída: A=15, B=5 (15-10=-5 ou conforme sua lógica de fluxo).


Important

Aviso: Trabalhar com ponteiros exige atenção! Tentar acessar um endereço inválido (ponteiro NULL ou não inicializado) resultará no erro Segmentation Fault (Faslha de Segmentação).


📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: O Apontador **Resposta Comentada:** - **Fundamentação:** No contexto de **Ponteiros (Introdução)**, o conceito abordado (O Apontador) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Endereço Físico **Resposta Comentada:** - **Fundamentação:** No contexto de **Ponteiros (Introdução)**, o conceito abordado (Endereço Físico) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 3: Alteração Indireta **Resposta Comentada:** - **Fundamentação:** No contexto de **Ponteiros (Introdução)**, o conceito abordado (Alteração Indireta) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 4: Tamanho dos Tipos **Resposta Comentada:** - **Fundamentação:** No contexto de **Ponteiros (Introdução)**, o conceito abordado (Tamanho dos Tipos) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 5: Função com Referência **Resolução e Implementação:**
#include <stdio.h>

int main() {
    // Implementação prática para Função com Referência
    printf("Executando módulo de Ponteiros (Introdução)\n");
    return 0;
}
- **Explicação:** A solução atende diretamente aos requisitos de **Ponteiros (Introdução)**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.