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 pointer, ele não aponta automaticamente para nada significativo. Um pointer não inicializado contém endereços de memória aleatórios, o que pode causar erros graves se você tentar usá-lo. É nesse ponto que os null pointers se tornam essenciais para uma programação segura.

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

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

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

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

if (ptr != nullptr) {
    // É seguro 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 os pointer com nullptr quando você os declarar e faça o check de null antes de fazer dereference.

challenge icon

Desafio

Fácil

Crie um programa que demonstre o uso seguro de pointer verificando se há pointers null antes de fazer a dereference deles.

A seguinte entrada será fornecida:

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

Seu programa deve:

  1. Declare uma variável inteira chamada data e inicialize-a com o valor 42
  2. Declare um pointer chamado ptr
  3. Se a entrada for "valid", assign o endereço de data a ptr
  4. Se a entrada for "null", assign nullptr a ptr
  5. Use uma if-statement para check se ptr não é null antes de tentar usá-lo
  6. Se o pointer não for null, imprima o valor para o qual ele aponta
  7. Se o pointer for null, imprima uma mensagem de segurança

Use o seguinte formato exato de saída:

Value: [value]

Para pointers null, use este formato:

Pointer is null - cannot dereference

Experimente você mesmo

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

int main() {
    // Ler entrada
    string input;
    cin >> input;
    
    // Declare 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 a ptr
    // - Use if-statement 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

Pratique por conta própria: Compilador de C++ online