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 Desafío
FácilEn el código dado, definimos una variable llamada y.
- Escribe una función
squareque 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
squarecomo en la funciónmainpara 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;
}