Menu
Coddy logo textTech

Punteros NULL

Parte de la sección Logic & Flow del Journey de C de Coddy — lección 5 de 63.

A veces necesitas declarar un puntero pero no tienes una dirección de memoria válida para asignarle inmediatamente. En estas situaciones, es importante inicializar el puntero con un valor especial llamado NULL.

Un puntero NULL es un puntero que no apunta a ninguna dirección de memoria válida. En C, NULL se define normalmente como 0 o (void*)0. Cuando inicializas un puntero a NULL, estás indicando explícitamente que actualmente no apunta a nada útil.

int *ptr = NULL;    // Inicializa el puntero a NULL
printf("%p", ptr);  // Esto imprimirá 0 o (nil)

Inicializar punteros a NULL se considera una buena práctica de programación porque evita que su puntero contenga valores basura aleatorios. Un puntero no inicializado podría contener cualquier dirección de memoria aleatoria, lo que podría provocar un comportamiento impredecible si intenta usarlo accidentalmente.

Puedes comprobar si un puntero es NULL antes de usarlo, lo que ayuda a prevenir fallos y hace que tu código sea más robusto. Esta comprobación de seguridad se vuelve especialmente importante a medida que tus programas se vuelven más complejos.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre la inicialización y comprobación adecuada de punteros NULL. Tu programa debe:

  1. Declarar un puntero a un entero llamado safe_ptr e inicializarlo a NULL
  2. Declarar un puntero a un carácter llamado char_ptr e inicializarlo a NULL
  3. Comprobar si safe_ptr es NULL usando una sentencia if e imprimir "safe_ptr is NULL" si lo es
  4. Comprobar si char_ptr es NULL usando una sentencia if e imprimir "char_ptr is NULL" si lo es
  5. Imprimir la dirección de memoria almacenada en safe_ptr usando printf con el especificador de formato %p
  6. Imprimir la dirección de memoria almacenada en char_ptr usando printf con el especificador de formato %p

Tu salida debe mostrar los resultados en el siguiente formato:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

Las direcciones de memoria reales se mostrarán como 0, (nil), o una representación NULL similar dependiendo de tu sistema, pero el formato y las etiquetas deben coincidir exactamente como se muestra arriba.

Hoja de referencia

Un puntero NULL es un puntero que no apunta a ninguna dirección de memoria válida. En C, NULL se define normalmente como 0 o (void*)0.

Inicialice los punteros a NULL para evitar valores de basura aleatorios:

int *ptr = NULL;    // Inicializar puntero a NULL
printf("%p", ptr);  // Esto imprimirá 0 o (nil)

Compruebe si un puntero es NULL antes de usarlo para evitar bloqueos:

if (ptr == NULL) {
    // Es seguro manejar el caso NULL
}

Pruébalo tú mismo

#include <stdio.h>

int main() {
    // TODO: Escribe tu código aquí
    // Declara e inicializa tus punteros
    // Verifica si los punteros son NULL
    // Imprime la salida requerida
    
    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 Logic & Flow