Menu
Coddy logo textTech

Valor vs. Puntero

Lección 7 de 17 del curso Funciones en C de Coddy.

Cuando pasamos parámetros a una función, podemos hacerlo de dos maneras: por valor o por puntero. Veamos un ejemplo sencillo para entender a qué nos referimos con valor y puntero:

#include <stdio.h>

void sum(int a) {
   a = a + 1;
   printf("sum function: %d\n", a);
}

int main(void) {
   int a = 10;
   sum(a);
   printf("main function: %d\n", a);
   return 0;
}

La salida:

sum function: 11 
main function: 10 

Como puedes ver en este ejemplo, usamos el valor, por lo que el valor de la variable a no cambió. Sin embargo, si necesitamos acceder a la variable y cambiar su valor, podemos usar un puntero como parámetro.

#include <stdio.h>

void sum(int *a) {
   *a = *a + 1;
   printf("sum function: %d\n", *a);
}

int main(void) {
   int a = 10;
   sum(&a);
   printf("main function: %d\n", a);
   return 0;
}

Dado que la función ahora acepta un puntero como parámetro, cuando se llama, debes pasar la dirección de la variable:

sum(&a);

La salida:

sum function: 11 
main function: 11 
challenge icon

Desafío

Fácil

En el código dado, definimos una variable llamada y.

  • Escribe una función square que tome un puntero a un entero como parámetro.
  • Dentro de esta función, eleva al cuadrado el valor de la variable a la que apunta el puntero e imprime su valor.
  • Imprime el valor de la variable tanto en la función square como en la función main para mostrar que la variable original ha sido cambiada.

Pruébalo tú mismo

#include <stdio.h>


// Función square para elevar al cuadrado el valor mediante un puntero
 
int main(void) {

    int a = 200;
    
    // Llamar a la función square
     
    // Imprimir la variable original 
    
    return 0;
}

Todas las lecciones de Funciones en C