Pasar valores frente a referencias
Cómo llegan los argumentos a su función.
Pasar valores frente a referencias es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Cómo se transfieren los argumentos
Cuando llama a una función, Zig debe introducir sus datos en ella. Hay dos formas: pasar el value en sí o pasar una referencia a él. 🚚
Copias al pasar por valor
De forma predeterminada, los argumentos primitivos se pasan by value: la función recibe su propia copia y no puede cambiar el original.
fn addOne(n: i32) i32 {
return n + 1;
}Las copias permanecen independientes
Como es una copy, las modificaciones dentro de la función nunca afectan a quien la llama. La variable externa permanece exactamente como estaba.
Los parámetros son inmutables
Los parámetros de las funciones en Zig son immutable. No puede reasignar un parámetro dentro del cuerpo, lo que mantiene clara la intención.
Pasar un puntero para compartir
Para permitir que una función modifique sus datos, pase un pointer con *T. La función trabajará entonces con el valor real, no con una copia.
fn bump(n: *i32) void {
n.* += 1;
}Desreferenciar para acceder
Dentro de la función, use .* para leer o escribir a través del puntero. n.* += 1 actualiza el valor que todavía conserva quien llama.
Obtener la dirección con &
En el lugar de la llamada, pase una dirección usando &. Después, bump(&count) permite que la función modifique count directamente.
var count: i32 = 0;
bump(&count); // count is now 1Los datos grandes prefieren referencias
En el caso de estructuras grandes, copiar resulta ineficiente. Pasar un const pointer comparte los datos con poco coste y no permite modificarlos.
fn area(r: *const Rect) i32 {
return r.w * r.h;
}Un puntero const es de solo lectura
Un *const T permite que la función lea sus datos, pero nunca que escriba en ellos. Obtiene velocidad sin renunciar a la seguridad.
Los slices ya son vistas
Un slice como []const u8 contiene un puntero y una longitud, por lo que pasarla comparte los datos subyacentes sin realizar una copia completa.
Elegir según la intención
Pase por value los datos pequeños y de solo lectura; pase un puntero cuando deba modificarlos o cuando los datos sean grandes.
Comprobación rápida
Quiere que una función cambie la variable de quien la llama. ¿Qué forma de parámetro se lo permite?
Resumen
Los valores se copian y no pueden cambiar los originales; los punteros los comparten. Use *T para mutar y *const T para leer datos grandes rápidamente. 🎯
Preguntas frecuentes
¿La lección «Pasar valores frente a referencias» es gratis?
Sí — el texto completo de «Pasar valores frente a referencias» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Pasar valores frente a referencias»?
Cómo llegan los argumentos a su función. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Pasar valores frente a referencias»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Sintaxis de funciones y tipos de retorno
- Pasar valores frente a referencias
- Funciones pub y visibilidad
- Recursión y retornos múltiples