Carlos Lefin Henriquez
Ese gato al fondo me distrae XD
Juan Ventrone
hahaha es inevitable
Christian Galicia Graciano
Michi Platzi (😎👍✨🐱🟢)
Comprender cómo C maneja los argumentos en funciones es clave para escribir código seguro y predecible. En C, los parámetros se pasan por valor, lo que implica trabajar con una copia temporal y proteger la variable original de cambios no deseados. Aquí verás, paso a paso, cómo funciona con un ejemplo de potencia y cuándo usar punteros para modificar datos directamente.
¿Qué significa pasar por valor en C?
En C, al llamar una función con argumentos, el compilador crea una copia del valor que envías. La función opera sobre esa copia, no sobre la variable original. Esto evita efectos colaterales y te da control sobre el estado de tus datos. En contraste, lenguajes como Fortran estaban acostumbrados a pasar por referencia, lo que permite cambiar directamente el valor en memoria.
¿Por qué no cambia la variable original n?
Porque dentro de la función se usa una copia. En el ejemplo de potencia:
¿Cómo implementar la potencia con for y n-- en C?
El cálculo de una potencia se logra inicializando un acumulador en 1 y multiplicando por la base mientras el exponente n sea mayor que cero. Aquí, n disminuye con n--, lo que demuestra claramente el paso por valor: la copia interna cambia, la externa no.
#include <stdio.h> int power(int base, int n) { int p = 1; // acumulador for (; n > 0; n--) { // n se decrementa dentro de la función (copia) printf("El valor temporal de n es %d\n", n); p = p * base; // p = p * base } return p; } int main(void) { int n = 3; // exponente original int resultado = power(2, n); // n fuera de la función conserva su valor original printf("El valor del exponente original sigue siendo %d\n", n); printf("El resultado de la potencia es %d\n", resultado); return 0; }
¿Qué muestra printf sobre el valor temporal de n?
Refuerza el concepto de copia interna:
¿Cuándo usar punteros para pasar por referencia en C?
Los punteros (también llamados pointers o apuntadores) permiten modificar directamente la variable original al enviar su dirección de memoria. Son útiles cuando necesitas que la función altere el estado externo. Sin embargo, en el ejemplo mostrado no es necesario: pasar por valor aporta simplicidad, evita errores y mantiene el código más claro.
¿Te gustaría que mostremos la misma potencia con punteros y comparemos ambos enfoques paso a paso? Deja tus preguntas o casos en los comentarios.
Carlos Lefin Henriquez
Ese gato al fondo me distrae XD
Juan Ventrone
hahaha es inevitable
Christian Galicia Graciano
Michi Platzi (😎👍✨🐱🟢)
Alejandro Urrea Giraldo
Aclaración: No es necesario que el nombre del parámetro y el argumento (el valor específico que se pasa a la función) sean iguales. La función puede declarar el parámetro con cualquier nombre, siempre y cuando coincida el tipo de dato que recibe
Juan Pablo Perez
Gracias por tu comentario.
Juan Andrés Cabrera Mendoza
gracias por el comentario
Jesús Ignacio García Fernández
Un **Puntero **es un argumento por referencia.
Juan Andrés Cabrera Mendoza
gracias por la aclaración
Juan Leonardo Martínez López
te entendí perfecto, gracias por compartir
Jesús Ignacio García Fernández
La funcion power tiene dos argumentos base y n, en el método main, no se sabe que es n, pero si se conoce i, quizás quedaría más claro en la salida que se imprime por printf indicar el nombre de la variable i, que es la que itera en el bucle.
En la segunda parte ya se cambia y en main se declara n quitando i, ahí se entiende mejor, la salida por pantalla.
Las funciones deberían ser un poco como cajas negras, es decir que no necesitamos conocer como están implementadas para poder llamarlas, por lo que si pasamos como argumento una variable no tiene porque necesariamente llamarse igual.
En la llamada a power que haces en main utilizas un literal 2, y una variable n con valor literal 3.
Cristian Blandon
¡Lindo gato! :cat:
Y la casa del gato es más linda que la del papá del gato :astonished:
Leandro Tenjo
Recuerdo que eso de Parámetro por Referencia me costo mucho entenderlo en la universidad. Me lo explicaban de forma muy rara y luego me mandaban a hacer Código sin haber terminado de entender. Al final le agarre el sentido, pero me hubiera gustado tener esta explicación en ese momento.
Josue Israel Rojas Vilca
Parametro por valor y referencia
Diesan Romero
Inviten más al gato.
Matias Arce
Parámetros por valor
Como hemos estado enviando los parametros se le llama parametros por valor, esto quiere decir que le enviamos una copia a la función. Es decir, sin importar lo que haga con esta copia, el original mantendrá su valor.
Cabe mencionar que tambien existe el parametro por referencia, el cual envía directamente la posición en memoria de donde se ubica esta variable. Es decir, le enviamos la original y la modificamos en la función.
Ricardo Rito Anguiano
Esto solia ser un problema cuando empezaba, que bueno que se toma esta clase en cuenta para evitar errores a quienes recien empiezan :D
Kalos Lazo Mera
Tal cual!
Javi Felices
Buenas peña. Dejo este recurso donde habla sobre Funciones por referencia y por valor en C cortesía de Parzibyte's Un saludo y gracias.
Antony Suica Cuartas
No se si entendi bien...al colocarle n-- es como si recorriera al reves? o sea...si tengo n=4, va bajando n=3, n=2, n=1 ....?
Jonathan David Olivos
Hola tonyoz! :D Efectivamente, el -- hace el decremento de valor en una unidad por cada ciclo, es similar al ++ que te aumenta una unidad por ciclo, solo que al revés. No te suma sino que te resta.
Javi Felices
Para asimilar más muchos conceptos de estos cursos de C, aconsejo tomar también el Curso de Programación Estructurada, hay una parte que habla de los Operadores de asignación, incremento y decremento.
David Klein
Si alguien se pregunta como implementar una funcion con punteros, es algo así:
#include <stdio.h> void miFuncion(int *parametro){ *parametro = 42; // * para usar variable en esa dirección } int main(){ int miValor; miFuncion(&miValor); //& para pasar dirección printf("%i", miValor); return 0; }
JESUS ONESIMO ZAMORA GARCIA
Sentí muy revuelta esta clase, me revolvió mucho
Jorge Armando Lurduy Suarez
el gato del profe le añade estilo a las clases
Paulina Yañez Rubio
Esta explicación vaya que sí me ha gustado. Y por cierto, el gatito esta hermoso. Me gusta verlo :)
DAMIÁN NICOLAS PINEDO
AME ese gato todo pancho del fondo necesito un juguete de arañar como el que tenes para los mios
Omar Villada
Por primera vez entiendo el parámetro por valor y por referencia.
Juan Francisco
DEBEMOS ACLARAR ALGO:
Para no alterar el valor dentro de la variable usando un ciclo, el profesor uso un ciclo dentro de una funcion, asi la funcion crea una copia de los parametros osea de la variable y el ciclo usa esta copia y la mofica en cada iteracion.
Al final del ciclo la copia viene modifcada pero afuera de la funcion la variable queda inalterada.