C-Zeiger, Strings und Typen
Überbrücken Sie die Typsysteme von C und Zig.
C-Zeiger, Strings und Typen 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.
C Types Get Translated
When Zig imports C, each C type maps to a Zig one. An int becomes c_int, so widths match the C ABI exactly.
const x: c_int = 10;The C ABI Integers
Zig provides ABI-matching names like c_int, c_uint, c_long, and c_char so your values line up with what C expects.
C Pointers Use [*c]
A raw C pointer becomes the special [*c]T type. It can be null and converts loosely, mirroring C's flexible pointers.
var p: [*c]u8 = null;Why [*c] Is Special
The [*c] type bridges C's any-length, maybe-null pointers. It coerces to and from Zig slices and pointers where it can.
C Strings Are Bytes
A C string is just a pointer to bytes ending in a zero. There is no length stored, only the null terminator.
Null-Terminated Literals
Write a C-style string with the sentinel form. The type [*:0]const u8 marks bytes that end in a 0.
const s: [*:0]const u8 = "hello";Pass Strings to C
Zig string literals are already null-terminated, so you can hand them straight to C functions expecting a char pointer.
c.puts("done");Read a C String Back
To turn a C string into a Zig slice, use std.mem.span, which walks to the null byte to find the length.
const slice = std.mem.span(cstr);void Pointers
C's void* shows up as ?*anyopaque in Zig. You cast it back to a concrete pointer type before using it.
Cast with @ptrCast
Bridging pointer types across the C boundary uses @ptrCast, which reinterprets a pointer without changing the address.
const p: *Node = @ptrCast(@alignCast(raw));Match, Do Not Guess
The safe habit is to match C's exact types: use c_int for int and span for strings, so nothing is silently wrong.
Quick Check
Recall how Zig turns a C string into a usable slice.
Recap
You learned that C types map to ABI names like c_int, C pointers use [*c], and std.mem.span turns C strings into slices. 🎯
Häufig gestellte Fragen
Ist die Lektion „C-Zeiger, Strings und Typen“ kostenlos?
Ja — der vollständige Text von „C-Zeiger, Strings und Typen“ 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 „C-Zeiger, Strings und Typen“?
Überbrücken Sie die Typsysteme von C und Zig. 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 „C-Zeiger, Strings und Typen“?
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
- C-Header mit @cImport importieren
- C-Funktionen aufrufen und verknüpfen
- C-Zeiger, Strings und Typen
- zig translate-c zum Lesen von C als Zig