Menu
Coddy logo textTech

Modificar variables mediante punteros

Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 27 de 63.

Now puedes aprovechar el verdadero poder de los punteros: modificar la variable original mediante una función. Cuando pasas un puntero a una función, la función puede usar el operador de desreferenciación para cambiar el valor almacenado en esa dirección de memoria.

Dentro de la función, desreferencias el puntero mediante el operador * para acceder al valor de la variable original y modificarlo. Esta técnica se denomina paso por referencia porque estás pasando una referencia a la ubicación de la variable en la memoria.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Dereference to modify the original value
}

int main() {
    int x = 5;
    doubleValue(&x);  // Pasa la dirección de x
    // ¡x ahora es 10!
    return 0;
}

La clave es usar *ptr en el lado izquierdo de la asignación para modificar el valor en la dirección de memoria que contiene el puntero. Esto permite que las funciones cambien permanentemente las variables de la función que las llama, abriendo posibilidades de programación potentes que el paso por valor simplemente no puede lograr.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre cómo modificar variables mediante punteros creando una función que triplique el valor de un entero.

Tu programa debe:

  1. Crear una función llamada tripleValue que reciba un puntero a un entero como parámetro
  2. Dentro de la función tripleValue, usar el operador de desreferenciación para multiplicar por 3 el valor ubicado en la dirección de memoria
  3. Dentro de la función tripleValue, imprimir el nuevo valor con el formato: Value tripled to: [value]
  4. En la función main, declarar una variable entera llamada number e inicializarla con el valor 8
  5. Imprimir el valor original con el formato: Original value: [value]
  6. Llamar a la función tripleValue y pasar la dirección de la variable number usando el operador de dirección
  7. Después de la llamada a la función, imprimir el valor final de number con el formato: Final value: [value]

Tu salida debe demostrar que la función modifica correctamente la variable original mediante el puntero:

Original value: 8
Value tripled to: 24
Final value: 24

Este desafío demuestra el poder del paso por referencia mediante punteros, donde la función puede modificar permanentemente la variable original al desreferenciar el puntero y cambiar el valor ubicado en esa posición de memoria.

Pruébalo tú mismo

#include <stdio.h>

// TODO: Escribe tu función tripleValue aquí

int main() {
    // TODO: Escribe tu código aquí
    // Declara e inicializa la variable number
    // Print the original value
    // Llama a la función tripleValue
    // Imprime el valor final
    
    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