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
- Déclarer des types optionnels
- Déballer en toute sécurité avec if et orelse
- Pointeurs optionnels et ?*T
- null ou undefined