Menu
Coddy logo textTech

Pasar punteros a funciones

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

Ahora que entiendes las limitaciones del paso por valor, exploremos cómo pasar punteros a funciones resuelve este problema. En lugar de pasar una copia del valor de una variable, puedes pasar la dirección de memoria de la variable a la función.

Cuando pasas un puntero a una función, la función recibe acceso a la ubicación en memoria de la variable original. Esto significa que la función puede trabajar directamente con los datos originales, no solo con una copia de los mismos.

void processValue(int *ptr) {
    // ptr contiene la dirección de la variable original
    // La función ahora puede acceder a esa ubicación de memoria
}

int main() {
    int x = 10;
    processValue(&x);  // Pasar la dirección de x
    return 0;
}

Observe cómo usamos el operador de dirección & al llamar a la función para pasar la dirección de la variable. El parámetro de la función se declara como int *ptr, lo que indica que espera recibir un puntero a un entero. Esta técnica fundamental abre posibilidades poderosas para que las funciones interactúen con los datos de su programa.

challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre el paso de punteros a funciones. Tu programa debe:

  1. Crear una función llamada displayValue que tome un puntero a un entero como parámetro
  2. Dentro de la función displayValue, usa el operador de desreferencia para acceder al valor en la dirección de memoria e imprímelo en el formato: Value at address: [value]
  3. En la función main, declara una variable entera llamada number e inicialízala con el valor 42
  4. Imprime el valor original en el formato: Original value: [value]
  5. Llama a la función displayValue y pasa la dirección de la variable number utilizando el operador de dirección (address-of)
  6. Después de la llamada a la función, imprime un mensaje de confirmación: Function call completed

Tu salida debe demostrar que la función recibe y accede con éxito a la dirección de memoria de la variable original:

Original value: 42
Value at address: 42
Function call completed

Este desafío introduce el concepto fundamental de pasar punteros a funciones, permitiendo que la función acceda a la ubicación de memoria de la variable original en lugar de trabajar con una copia de su valor.

Hoja de referencia

Al pasar punteros a funciones, la función recibe acceso a la ubicación de memoria de la variable original en lugar de una copia de su valor.

Utilice el operador de dirección & para pasar la dirección de una variable a una función:

void processValue(int *ptr) {
    // ptr contiene la dirección de la variable original
    // La función ahora puede acceder a esa ubicación de memoria
}

int main() {
    int x = 10;
    processValue(&x);  // Pasar la dirección de x
    return 0;
}

El parámetro de la función se declara como int *ptr para indicar que espera recibir un puntero a un entero.

Pruébalo tú mismo

#include <stdio.h>

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

int main() {
    // TODO: Escribe tu código aquí
    // 1. Declarar e inicializar la variable number
    // 2. Imprimir el valor original
    // 3. Llamar a la función displayValue
    // 4. Imprimir el mensaje de finalización
    
    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