Passaggio di valori e riferimenti
Capire come gli argomenti arrivano alla funzione
Passaggio di valori e riferimenti è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.
Cómo se pasan 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. 🚚
Pasar por valor hace una copia
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 son independientes
Al ser una copy, las modificaciones dentro de la función nunca afectan a quien la llamó. 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.
Pase un puntero para compartir
Para permitir que una función modifique sus datos, pase un pointer con *T. Así, la función trabaja con el valor real, no con una copia.
fn bump(n: *i32) void {
n.* += 1;
}Desreferencie para acceder a él
Dentro de la función, use .* para leer o escribir a través del puntero. n.* += 1 actualiza el valor que aún conserva quien hizo la llamada.
Obtenga la dirección con &
En el punto de llamada, pase una dirección usando &. Así, bump(&count) permite que la función modifique count directamente.
var count: i32 = 0;
bump(&count); // count is now 1Los datos grandes prefieren referencias
Copiar estructuras grandes resulta ineficiente. Pasar un const pointer comparte los datos con poco coste y sin permitir modificaciones.
fn area(r: *const Rect) i32 {
return r.w * r.h;
}Un puntero const significa solo lectura
Un *const T permite que la función lea sus datos, pero nunca que los escriba. 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.
Elija según la intención
Pase por value los datos pequeños y de solo lectura; pase un puntero cuando deba modificarlos o cuando sean grandes.
Comprobación rápida
Quiere que una función modifique la variable de quien la llama. ¿Qué forma de parámetro se lo permite?
Repaso
Los valores se copied y no pueden modificar los originales; los punteros los comparten. Use *T para modificar y *const T para leer datos grandes rápidamente. 🎯
Domande Frequenti
La lezione «Passaggio di valori e riferimenti» è gratuita?
Sì — il testo completo di «Passaggio di valori e riferimenti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.
Cosa imparerò in «Passaggio di valori e riferimenti»?
Capire come gli argomenti arrivano alla funzione Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Zig Academy?
Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Passaggio di valori e riferimenti»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Zig Academy?
Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Sintassi delle funzioni e tipi restituiti
- Passaggio di valori e riferimenti
- Funzioni pub e visibilità
- Ricorsione e restituzioni multiple