Menu
Coddy logo textTech

Punteros nulos

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy. Lección 4 de 56.

Cuando declaras un puntero, no apunta automáticamente a nada significativo. Un puntero no inicializado contiene direcciones de memoria aleatorias, lo que puede provocar errores graves si intentas usarlo. Aquí es donde los punteros nulos se vuelven esenciales para una programación segura.

Un puntero null es un puntero que apunta explícitamente a nada. En C++ moderno, creas un puntero null inicializándolo con nullptr:

int* ptr = nullptr;  // ptr ahora es un puntero nulo

La palabra clave nullptr indica que el puntero no apunta a ninguna ubicación de memoria válida. Esto es mucho más seguro que dejar un puntero sin inicializar, porque puedes comprobar si un puntero es null antes de intentar desreferenciarlo.

Antes de usar cualquier puntero, debes verificar que no sea nulo mediante una simple instrucción if:

if (ptr != nullptr) {
    // Es seguro usar *ptr aquí
    int value = *ptr;
}

Esta práctica evita que tu programa se bloquee debido al acceso a ubicaciones de memoria no válidas. Inicializa siempre los punteros a nullptr cuando los declares y comprueba que no sean nulos antes de desreferenciarlos.

challenge icon

Desafío

Fácil

Crea un programa que demuestre el uso seguro de punteros comprobando si hay punteros nulos antes de desreferenciarlos.

Se proporcionará la siguiente entrada:

  • Una cadena que será "valid" o "null"

Tu programa debe:

  1. Declarar una variable entera llamada data e inicializarla con el valor 42
  2. Declarar un puntero llamado ptr
  3. Si la entrada es "valid", asignar la dirección de data a ptr
  4. Si la entrada es "null", asignar nullptr a ptr
  5. Usar una sentencia if para comprobar que ptr no sea nulo antes de intentar usarlo
  6. Si el puntero no es nulo, imprimir el valor al que apunta
  7. Si el puntero es nulo, imprimir un mensaje de seguridad

Usa el siguiente formato de salida exacto:

Value: [value]

Para los punteros nulos, usa este formato:

Pointer is null - cannot dereference

Pruébalo tú mismo

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

int main() {
    // Leer la entrada
    string input;
    cin >> input;
    
    // Declarar la variable data
    int data = 42;
    
    // TODO: Escribe tu código aquí
    // - Declara un puntero llamado ptr
    // - Comprueba la entrada y asigna el valor apropiado a ptr
    // - Usa una sentencia if para comprobar y usar el puntero de forma segura
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C++ online