Menu
Coddy logo textTech

Ponteiros Nulos

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 4 de 56.

Quando você declara um ponteiro, ele não aponta automaticamente para nada significativo. Um ponteiro não inicializado contém endereços de memória aleatórios, o que pode levar a erros graves se você tentar usá-lo. É aqui que os ponteiros nulos se tornam essenciais para uma programação segura.

Um ponteiro nulo é um ponteiro que aponta explicitamente para nada. No C++ moderno, você cria um ponteiro nulo inicializando-o com nullptr:

int* ptr = nullptr;  // ptr agora é um ponteiro nulo

A palavra-chave nullptr indica que o ponteiro não está apontando para nenhum local de memória válido. Isso é muito mais seguro do que deixar um ponteiro não inicializado, porque você pode verificar se um ponteiro é nulo antes de tentar desreferenciá-lo.

Antes de usar qualquer ponteiro, você deve verificar se ele não é nulo usando uma instrução if simples:

if (ptr != nullptr) {
    // Seguro para usar *ptr aqui
    int value = *ptr;
}

Esta prática evita que seu programa trave devido ao acesso a locais de memória inválidos. Sempre inicialize ponteiros como nullptr ao declará-los e verifique se são nulos antes de desreferenciar.

challenge icon

Desafio

Fácil

Crie um programa que demonstre o uso seguro de ponteiros, verificando se há ponteiros nulos antes de desreferenciá-los.

A seguinte entrada será fornecida:

  • Uma string que será "valid" ou "null"

Seu programa deve:

  1. Declarar uma variável inteira chamada data e inicializá-la com o valor 42
  2. Declarar um ponteiro chamado ptr
  3. Se a entrada for "valid", atribua o endereço de data a ptr
  4. Se a entrada for "null", atribua nullptr a ptr
  5. Use uma instrução if para verificar se ptr não é nulo antes de tentar usá-lo
  6. Se o ponteiro não for nulo, imprima o valor para o qual ele aponta
  7. Se o ponteiro for nulo, imprima uma mensagem de segurança

Use o seguinte formato de saída exato:

Value: [value]

Para ponteiros nulos, use este formato:

Pointer is null - cannot dereference

Experimente você mesmo

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Ler a entrada
    string input;
    cin >> input;
    
    // Declarar a variável de dados
    int data = 42;
    
    // TODO: Escreva seu código aqui
    // - Declarar um ponteiro chamado ptr
    // - Verificar a entrada e atribuir o valor apropriado ao ptr
    // - Usar uma instrução if para verificar e usar o ponteiro com segurança
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo