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 falhe 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", atribuir o endereço de data a ptr
  4. Se a entrada for "null", atribuir nullptr a ptr
  5. Usar uma instrução if para verificar se ptr não é nulo antes de tentar usá-lo
  6. Se o ponteiro não for nulo, imprimir o valor para o qual ele aponta
  7. Se o ponteiro for nulo, imprimir 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

Folha de consulta

Inicialize ponteiros como nullptr para evitar comportamento indefinido:

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

Sempre verifique se um ponteiro não é nulo antes de desreferenciar:

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

A palavra-chave nullptr indica explicitamente que o ponteiro não está apontando para nenhum local de memória válido, tornando seu código mais seguro e evitando falhas ao acessar memória inválida.

Experimente você mesmo

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

int main() {
    // Ler a entrada
    string input;
    cin >> input;
    
    // Declarar a variável data
    int data = 42;
    
    // TODO: Escreva seu código aqui
    // - Declare um ponteiro chamado ptr
    // - Verifique a entrada e atribua o valor apropriado para ptr
    // - Use a 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