Menu
Coddy logo textTech

Operador de desreferencia

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 3 de 56.

Ahora que puedes obtener un puntero a una variable, necesitas aprender cómo acceder y modificar el valor en esa dirección de memoria. Aquí es donde el operador de desreferencia (*) se vuelve esencial.

El operador de desreferencia * se utiliza para acceder al valor almacenado en la dirección de memoria a la que apunta un puntero. Cuando colocas * antes de una variable de puntero, este "sigue" la dirección y te devuelve el valor real almacenado allí.

int number = 42;
int* ptr = &number;  // ptr almacena la dirección de number
int value = *ptr;    // value ahora contiene 42

También puedes usar el operador de desreferencia para modificar la variable original a través del puntero. Cuando asignas un nuevo valor a *ptr, en realidad estás cambiando el valor almacenado en esa ubicación de memoria:

*ptr = 100;  // Cambia number a 100
// number ahora es 100, aunque lo hayamos modificado a través de ptr

Este acceso indirecto es lo que hace que los punteros sean tan potentes: puedes leer y modificar variables desde cualquier lugar de tu programa siempre que tengas un puntero hacia ellas.

challenge icon

Desafío

Fácil

Crea un programa que demuestre el operador de desreferencia modificando el valor de una variable a través de un puntero.

Se proporcionará la siguiente entrada:

  • Un número entero que representa el valor inicial de una variable
  • Un número entero que representa el nuevo valor a asignar a través del puntero

Tu programa debe:

  1. Declarar una variable entera llamada temperature e inicializarla con el primer valor de entrada
  2. Crear un puntero llamado tempPtr que apunte a la variable temperature
  3. Imprimir el valor original desreferenciando el puntero
  4. Usar el operador de desreferencia para cambiar el valor de temperature al segundo valor de entrada a través del puntero
  5. Imprimir el nuevo valor desreferenciando el puntero nuevamente

Utiliza el siguiente formato de salida exacto:

Original value: [original value]
New value: [new value]

Hoja de referencia

El operador de desreferencia * se utiliza para acceder al valor almacenado en la dirección de memoria a la que apunta un puntero:

int number = 42;
int* ptr = &number;  // ptr almacena la dirección de number
int value = *ptr;    // value ahora contiene 42

También puedes usar el operador de desreferencia para modificar la variable original a través del puntero:

*ptr = 100;  // Cambia number a 100
// number ahora es 100, aunque lo hayamos modificado a través de ptr

Este acceso indirecto te permite leer y modificar variables desde cualquier lugar de tu programa, siempre que tengas un puntero a ellas.

Pruébalo tú mismo

#include <iostream>
using namespace std;

int main() {
    // Leer valores de entrada
    int initialValue, newValue;
    cin >> initialValue;
    cin >> newValue;
    
    // TODO: Escribe tu código a continuación
    // 1. Declarar la variable temperature e inicializarla con initialValue
    // 2. Crear el puntero tempPtr apuntando a temperature
    // 3. Imprimir el valor original usando la desreferenciación del puntero
    // 4. Cambiar el valor de temperature a través del puntero usando newValue
    // 5. Imprimir el nuevo valor usando la desreferenciación del puntero
    
    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