Contenido del curso
0:00/12:49
Bibliotecas estándar de C explicadas
Suscríbete para ver másscanf y printf en C con math.h
Suscríbete para ver másStrings en C: strrev, strcmp y strcat explicados
Suscríbete para ver másMidiendo tiempo de ejecución en C con time.h
Suscríbete para ver másConversión de decimal a binario en C
Suscríbete para ver másComprender 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.