Passage de valeurs ou de références
Découvrez comment les arguments parviennent à votre fonction.
Passage de valeurs ou de références est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.
Comment les arguments sont transmis
Lorsque vous appelez une fonction, Zig doit faire entrer vos données dans celle-ci. Deux possibilités : transmettre la valeur elle-même ou transmettre une référence vers celle-ci. 🚚
Le passage par valeur crée une copie
Par défaut, les arguments primitifs sont transmis par valeur : la fonction reçoit sa propre copie et ne peut pas modifier votre valeur d’origine.
fn addOne(n: i32) i32 {
return n + 1;
}Les copies restent indépendantes
Puisqu’il s’agit d’une copie, les modifications effectuées dans la fonction ne touchent jamais l’appelant. Votre variable extérieure reste exactement comme elle était.
Les paramètres sont immuables
Les paramètres de fonction sont immuables dans Zig. Vous ne pouvez pas réaffecter un paramètre dans le corps de la fonction, ce qui clarifie l’intention.
Transmettre un pointeur pour partager une valeur
Pour permettre à une fonction de modifier vos données, transmettez un pointeur avec *T. La fonction travaille alors sur votre valeur réelle, et non sur une copie.
fn bump(n: *i32) void {
n.* += 1;
}Déréférencer pour y accéder
À l’intérieur, vous utilisez .* pour lire ou écrire à travers le pointeur. n.* += 1 met à jour la valeur que l’appelant détient toujours.
Obtenir l’adresse avec &
Au moment de l’appel, vous transmettez une adresse avec &. Ainsi, bump(&count) permet à la fonction de modifier count directement.
var count: i32 = 0;
bump(&count); // count is now 1Les grandes données préfèrent les références
Pour les grandes structures, effectuer une copie est coûteux. Transmettre un pointeur const permet de partager les données à moindre coût sans autoriser leur modification.
fn area(r: *const Rect) i32 {
return r.w * r.h;
}Un pointeur const signifie « en lecture seule »
Un *const T permet à la fonction de lire vos données, mais jamais de les modifier. Vous gagnez en rapidité sans renoncer à la sûreté.
Les tranches sont déjà des vues
Une tranche comme []const u8 contient un pointeur et une longueur. La transmettre partage donc les données sous-jacentes sans effectuer de copie complète.
Choisir selon l’intention
Transmettez par valeur les petites données en lecture seule ; transmettez un pointeur lorsque vous devez les modifier ou lorsqu’elles sont volumineuses.
Vérification rapide
Vous voulez qu’une fonction modifie la variable de l’appelant. Quelle forme de paramètre le permet ?
Récapitulatif
Les valeurs sont copiées et ne peuvent pas modifier vos valeurs d’origine ; les pointeurs les partagent. Utilisez *T pour modifier de grandes données et *const T pour les lire rapidement. 🎯
Apprends Zig avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Passage de valeurs ou de références » est-elle gratuite ?
Oui — le texte complet de « Passage de valeurs ou de références » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Passage de valeurs ou de références » ?
Découvrez comment les arguments parviennent à votre fonction. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Zig Academy ?
Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Passage de valeurs ou de références » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?
Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Syntaxe des fonctions et types de retour
- Passage de valeurs ou de références
- Fonctions pub et visibilité
- Récursivité et retours multiples