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 42Tambié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 ptrEste 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.
Desafío
FácilCrea 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:
- Declarar una variable entera llamada
temperaturee inicializarla con el primer valor de entrada - Crear un puntero llamado
tempPtrque apunte a la variabletemperature - Imprimir el valor original desreferenciando el puntero
- Usar el operador de desreferencia para cambiar el valor de
temperatureal segundo valor de entrada a través del puntero - 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 42Tambié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 ptrEste 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;
}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
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea