Zig Academy · Lektion

Konstante Zeiger und Ausrichtung

Drücken Sie schreibgeschützten Zugriff und Layout aus.

Lektion 4 von 413 Schritte

Konstante Zeiger und Ausrichtung ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Schreibgeschützter Zugriff

Oft möchten Sie einen Wert teilen, aber versprechen, ihn nicht zu ändern. Ein const-Zeiger gewährt Lesezugriff und verhindert Schreibzugriffe.

Der Typ *const T

Schreiben Sie einen Zeiger auf unveränderliche Daten als *const T. Sie können über ihn lesen, aber eine Zuweisung an sein Ziel führt zu einem Kompilierungsfehler.

const x: i32 = 5;
const p: *const i32 = &x;

Const wird mit & weitergegeben

Die Adresse eines const-Werts ergibt automatisch einen *const T, sodass die Unveränderlichkeit durch den Typ erhalten bleibt.

const v: u8 = 9;
const p = &v; // *const u8

Mutable wird zu Const konvertiert

Ein *T lässt sich problemlos in einen *const T konvertieren, da das Entziehen der Schreibberechtigung immer sicher ist. Die umgekehrte Richtung ist nicht erlaubt.

var n: i32 = 1;
const ro: *const i32 = &n;

Warum Sie const bevorzugen sollten

Wenn Sie einen Parameter vom Typ *const T akzeptieren, signalisieren Sie den Aufrufenden, dass Sie nur lesen werden. Dadurch lassen sich Funktionen leichter vertrauensvoll verwenden.

fn show(p: *const i32) void {
    // read only
}

Was Ausrichtung bedeutet

Jeder Typ hat eine alignment: die Adressgrenze, auf der er liegen muss. Ein u32 benötigt normalerweise eine durch vier teilbare Adresse.

Mit @alignOf abfragen

Das integrierte @alignOf(T) gibt die erforderliche Ausrichtung eines Typs in Bytes zurück, genauso wie @sizeOf seine Größe zurückgibt.

const a = @alignOf(u32);

Ausrichtung im Typ

Sie können die Ausrichtung eines Zeigers mit align in seinem Typ angeben, etwa als *align(4) u8, um eine bestimmte Grenze zu verlangen.

var p: *align(4) u8 = undefined;

Warum Ausrichtung wichtig ist

Die Hardware liest ausgerichtete Daten schneller, und manche CPUs lösen bei einem fault durch einen nicht ausgerichteten Zugriff aus. Zig verfolgt die Ausrichtung im Typ, damit dies korrekt bleibt.

Zu starke und zu schwache Ausrichtung

Ein Zeiger darf eine stärkere Ausrichtung als die Standardsausrichtung versprechen, aber Sie können sie nicht ohne einen expliziten Cast wie @alignCast abschwächen.

Const und align zusammen

Beides lässt sich problemlos kombinieren: Ein *const align(8) T ist ein Nur-Lese-Zeiger, der außerdem eine Acht-Byte-Grenze garantiert.

Kurzer Test

Sie schreiben eine Funktion, die den Wert hinter einem Zeiger nur lesen muss. Welcher Parametertyp drückt das am besten aus?

Zusammenfassung

Ein *const T-Zeiger gibt Daten schreibgeschützt weiter und lässt sich aus *T konvertieren, während die über @alignOf und align(n) sichtbare Ausrichtung korrekten und schnellen Speicherzugriff gewährleistet. 🎯

Kostenlos starten

Lerne Zig mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Konstante Zeiger und Ausrichtung“ kostenlos?

Ja — der vollständige Text von „Konstante Zeiger und Ausrichtung“ 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 „Konstante Zeiger und Ausrichtung“?

Drücken Sie schreibgeschützten Zugriff und Layout aus. 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 4 von 4.

Wie lange dauert die Lektion „Konstante Zeiger und Ausrichtung“?

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. Zeiger auf einzelne Elemente mit *T
  2. Dereferenzieren mit ptr.*
  3. Zeiger auf mehrere Elemente [*]T
  4. Konstante Zeiger und Ausrichtung
← Zurück zu Zig Academy