Menu
Coddy logo textTech

Modificar variables mediante punteros

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

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

Dentro de la función, desreferencias el puntero usando el operador * para acceder y modificar el valor de la variable original. Esta técnica se llama 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;  // Desreferenciar para modificar el valor original
}

int main() {
    int x = 5;
    doubleValue(&x);  // Pasar 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 potentes posibilidades de programación que el paso por valor simplemente no puede lograr.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre la modificación de variables a través de punteros creando una función que triplique el valor de un entero.

Tu programa debe:

  1. Crear una función llamada tripleValue que tome un puntero a un entero como parámetro
  2. Dentro de la función tripleValue, usar el operador de desreferencia para multiplicar el valor en la dirección de memoria por 3
  3. Dentro de la función tripleValue, imprimir el nuevo valor en 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 en 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 (address-of)
  7. Después de la llamada a la función, imprimir el valor final de number en el formato: Final value: [value]

Tu salida debe demostrar que la función modifica con éxito la variable original a través del puntero:

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

Este desafío demuestra el poder del paso por referencia usando punteros, donde la función puede modificar permanentemente la variable original desreferenciando el puntero y cambiando el valor en esa ubicación de memoria.

Hoja de referencia

Puedes modificar la variable original a través de una función utilizando punteros. Esta técnica se llama paso por referencia porque estás pasando una referencia a la ubicación de la variable en la memoria.

Dentro de la función, desreferencia el puntero utilizando el operador * para acceder y modificar el valor de la variable original:

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Desreferenciar para modificar el valor original
}

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

Usa *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.

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
    // Imprime el valor original
    // 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 Logic & Flow