0Pricing
Zig Academy · Lektion

Optionale Zeiger und ?*T

Kombinieren Sie Zeiger mit Optionalität.

Optionale Zeiger und ?*T ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

Pointers Can Be Optional Too

A pointer normally must always aim at a valid value. Make it optional and it gains a legitimate way to mean nothing yet.

The ?*T Shape

The type ?*T reads as: an optional pointer to a T. It either points at a real value or holds null.

var node: ?*Node = null;

A Safe Null Pointer

This is Zig answer to C null pointers. The pointer can be absent, but the optional forces you to check before dereferencing.

Unwrap Before You Follow

You cannot dereference a ?*T directly. First unwrap it with if or orelse to get the plain pointer underneath.

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

Capture Gives a Real Pointer

Inside the if capture the name is a plain *Node, ready to dereference with .* like any non-optional pointer.

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

Great for Linked Structures

Optional pointers shine in linked lists and trees, where a next or child field is null at the end of the chain.

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

Null Marks the End

When you walk a list, a next field of null cleanly signals that you have reached the final node and should stop.

Zig Packs the Tag Away

For pointers, Zig stores the null state in the pointer value itself, so a ?*T takes no extra space over a plain pointer.

Const Optional Pointers

You can combine read-only and optional: ?*const T is an optional pointer through which you may read but never write.

var view: ?*const u8 = null;

Still No Surprise Crashes

Because the type says it might be null, the compiler will not let you forget the check, unlike a raw C pointer dereference.

Walking a Chain

A while loop that captures each optional next pointer is the idiomatic way to traverse a list until null appears.

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

Quick Check

What does the type ?*Node describe?

Recap

You learned ?*T: a safe, optional pointer. Unwrap it before dereferencing, and let null mark the end of linked structures. 🔗

Häufig gestellte Fragen

Ist die Lektion „Optionale Zeiger und ?*T“ kostenlos?

Ja — der vollständige Text von „Optionale Zeiger und ?*T“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Optionale Zeiger und ?*T“?

Kombinieren Sie Zeiger mit Optionalität. Du übst Zig Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Zig Academy zu starten?

Keine Vorkenntnisse erforderlich. Zig Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Optionale Zeiger und ?*T“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Zig Academy-Lektion Code schreiben und ausführen?

Ja. Jede Zig Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Optionale Typen deklarieren
  2. Sicher entpacken mit if und orelse
  3. Optionale Zeiger und ?*T
  4. null im Vergleich zu undefined
← Zurück zu Zig Academy