Menu
Coddy logo textTech

El operador de desreferencia (*)

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

Ahora que sabes cómo almacenar direcciones en punteros, necesitas aprender cómo acceder al valor real almacenado en esa dirección de memoria. El operador de desreferencia (*) te permite "seguir" al puntero para obtener el valor al que apunta.

Cuando colocas el operador * delante de una variable de puntero, este accede al valor almacenado en la dirección de memoria que contiene el puntero. Piénsalo como si dijeras "dame lo que hay dentro de la habitación en esta dirección".

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Imprime 25 - el valor de age

Es importante entender que el asterisco (*) tiene dos significados diferentes en C. Al declarar un puntero como int *ptr;, el asterisco indica que ptr es un puntero. Cuando se usa con un puntero existente como *ptr, desreferencia el puntero para acceder al valor al que apunta.

El operador de desreferencia es esencial porque completa el ciclo de los punteros: puedes almacenar una dirección en un puntero con & y luego recuperar el valor en esa dirección con *. Esto te permite acceder y modificar variables de forma indirecta a través de sus direcciones de memoria.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre el flujo de trabajo completo de los punteros: declaración, asignación de dirección y desreferenciación. Tu programa debe:

  1. Declarar una variable entera llamada value e inicializarla con el valor 75
  2. Declarar una variable de tipo float llamada price e inicializarla con el valor 19.99
  3. Declarar un puntero a un entero llamado value_ptr
  4. Declarar un puntero a un float llamado price_ptr
  5. Usar el operador de dirección (address-of) para asignar la dirección de value a value_ptr
  6. Usar el operador de dirección (address-of) para asignar la dirección de price a price_ptr
  7. Usar el operador de desreferenciación para imprimir el valor de value a través de value_ptr
  8. Usar el operador de desreferenciación para imprimir el valor de price a través de price_ptr con exactamente 2 decimales

Tu salida debe mostrar los valores desreferenciados en el siguiente formato:

Value through pointer: 75
Price through pointer: 19.99

El desafío pone a prueba tu comprensión de cómo el operador de desreferenciación recupera el valor de la variable original siguiendo la dirección almacenada en el puntero.

Hoja de referencia

El operador de desreferencia (*) te permite acceder al valor almacenado en la dirección de memoria que contiene un puntero.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Imprime 25 - el valor de age

El asterisco (*) tiene dos significados diferentes en C:

  • En declaraciones como int *ptr; - indica que ptr es un puntero
  • Con punteros existentes como *ptr - desreferencia el puntero para acceder al valor al que apunta

El operador de desreferencia completa el ciclo del puntero: almacena una dirección con &, luego recupera el valor en esa dirección con *.

Pruébalo tú mismo

#include <stdio.h>

int main() {
    // TODO: Escribe tu código aquí
    // 1. Declarar e inicializar las variables
    // 2. Declarar los punteros
    // 3. Asignar direcciones a los punteros
    // 4. Imprimir los valores desreferenciados
    
    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