0Pricing
Zig Academy · Leçon

Pointeurs optionnels et ?*T

Combinez pointeurs et caractère optionnel.

Pointeurs optionnels et ?*T est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Les pointeurs peuvent aussi être optionnels

Un pointeur doit normalement toujours viser une valeur valide. Rendez-le optionnel et il pourra légitimement représenter l’absence de valeur.

La forme ?*T

Le type ?*T se lit ainsi : un pointeur optionnel vers un T. Il pointe soit vers une valeur réelle, soit contient null.

var node: ?*Node = null;

Un pointeur null sûr

Voici la réponse de Zig aux pointeurs null de C. Le pointeur peut être absent, mais l’optionnel vous oblige à effectuer une vérification avant le déréférencement.

Déballez avant de suivre le pointeur

Vous ne pouvez pas déréférencer directement un ?*T. Commencez par le déballer avec if ou orelse pour obtenir le pointeur ordinaire qu’il contient.

if (node) |p| {
    use(p.*);
}

La capture fournit un vrai pointeur

Dans la capture du if, le nom désigne un *Node ordinaire, prêt à être déréférencé avec .* comme n’importe quel pointeur non optionnel.

if (head) |p| {
    const value = p.*;
}

Idéal pour les structures chaînées

Les pointeurs optionnels sont particulièrement adaptés aux listes chaînées et aux arbres, où un champ next ou child vaut null à la fin de la chaîne.

const Node = struct { next: ?*Node };

null marque la fin

Lorsque vous parcourez une liste, un champ next égal à null indique clairement que vous avez atteint le dernier nœud et que vous devez vous arrêter.

Zig stocke l’indicateur dans le pointeur

Pour les pointeurs, Zig stocke l’état null directement dans la valeur du pointeur. Ainsi, un ?*T n’occupe pas plus d’espace qu’un pointeur ordinaire.

Pointeurs optionnels constants

Vous pouvez combiner lecture seule et optionnel : ?*const T est un pointeur optionnel au travers duquel vous pouvez lire, mais jamais écrire.

var view: ?*const u8 = null;

Toujours aucun plantage inattendu

Comme le type indique que la valeur peut être null, le compilateur ne vous laissera pas oublier la vérification, contrairement au déréférencement brut d’un pointeur C.

Parcourir une chaîne

Une boucle while qui capture chaque pointeur next optionnel est la manière idiomatique de parcourir une liste jusqu’à l’apparition de null.

while (cur) |n| {
    cur = n.next;
}

Vérification rapide

Que décrit le type ?*Node ?

Récapitulatif

Vous avez appris à utiliser ?*T : un pointeur optionnel sûr. Déballez-le avant de le déréférencer et laissez null marquer la fin des structures chaînées. 🔗

Questions Fréquemment Posées

La leçon « Pointeurs optionnels et ?*T » est-elle gratuite ?

Oui — le texte complet de « Pointeurs optionnels et ?*T » 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 « Pointeurs optionnels et ?*T » ?

Combinez pointeurs et caractère optionnel. 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 3 sur 4.

Combien de temps prend la leçon « Pointeurs optionnels et ?*T » ?

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

  1. Déclarer des types optionnels
  2. Déballer en toute sécurité avec if et orelse
  3. Pointeurs optionnels et ?*T
  4. null ou undefined
← Retour à Zig Academy