Zig Academy · Lektion

Valfria pekare och ?*T

Kombinera pekare med valfrihet

Lektion 3 av 413 steg

Valfria pekare och ?*T är en gratis lektion i Zig Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Zig Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Zig Academy innehåller totalt 4 lektioner.

Pekare kan också vara optionals

En pekare måste normalt alltid peka på ett giltigt värde. Gör den optional så får den ett legitimt sätt att betyda att inget finns ännu.

Formen ?*T

Typen ?*T kan läsas som: en optional-pekare till en T. Den pekar antingen på ett faktiskt värde eller innehåller null.

var node: ?*Node = null;

En säker null-pekare

Detta är Zigs svar på C:s null-pekare. Pekaren kan saknas, men optional-typen tvingar dig att kontrollera den innan dereferering.

Packa upp innan du följer pekaren

Du kan inte dereferera en ?*T direkt. Packa först upp den med if eller orelse för att få den vanliga pekaren under den.

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

Fångsten ger en riktig pekare

Inuti if-fångsten är namnet en vanlig *Node, redo att derefereras med .* precis som vilken icke-optional pekare som helst.

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

Utmärkt för länkade strukturer

Optional-pekare är särskilt användbara i länkade listor och träd, där ett nästa- eller barnfält är null i slutet av kedjan.

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

Null markerar slutet

När du går igenom en lista visar ett next-fält med null tydligt att du har nått den sista noden och bör sluta.

Zig lagrar taggen separat

För pekare lagrar Zig null-tillståndet i själva pekarvärdet, så en ?*T tar inte mer plats än en vanlig pekare.

Const optional-pekare

Du kan kombinera skrivskydd och optional: ?*const T är en optional-pekare genom vilken du får läsa, men aldrig skriva.

var view: ?*const u8 = null;

Fortfarande inga överraskande krascher

Eftersom typen anger att värdet kan vara null låter kompilatorn dig inte glömma kontrollen, till skillnad från en rå C-pekardereferering.

Gå igenom en kedja

En while-loop som fångar varje optional next-pekare är det idiomatiska sättet att traversera en lista tills null dyker upp.

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

Snabb kontroll

Vad beskriver typen ?*Node?

Sammanfattning

Du har lärt dig ?*T: en säker optional-pekare. Packa upp den innan dereferering och låt null markera slutet på länkade strukturer. 🔗

Gratis att börja

Lär dig Zig med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Valfria pekare och ?*T” gratis?

Ja – hela texten till ”Valfria pekare och ?*T” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Zig Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Zig Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Valfria pekare och ?*T”?

Kombinera pekare med valfrihet Ni övar på Zig Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Zig Academy?

Du behöver inga förkunskaper. Utbildningen i Zig Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Valfria pekare och ?*T”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Zig Academy-lektionen?

Ja. Varje Zig Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Deklarera valfria typer
  2. Packa upp säkert med if och orelse
  3. Valfria pekare och ?*T
  4. null jämfört med undefined
← Tillbaka till Zig Academy