C-pekare, strängar och typer
Överbrygga C:s och Zigs typsystem.
C-pekare, strängar och typer ä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.
C-typer översätts
När Zig importerar C mappas varje C-typ till en Zig-typ. En int blir c_int, så bredderna matchar C ABI exakt.
const x: c_int = 10;Heltalen i C ABI
Zig tillhandahåller ABI-matchande namn som c_int, c_uint, c_long och c_char, så att dina värden stämmer överens med det C förväntar sig.
C-pekare använder [*c]
En rå C-pekare blir den särskilda typen [*c]T. Den kan vara null och konverteras flexibelt, vilket speglar C:s fria pekarhantering.
var p: [*c]u8 = null;Varför [*c] är speciell
Typen [*c] överbryggar C:s pekare som kan ha valfri längd och eventuellt vara null. Den kan omvandlas till och från Zig-slices och pekare där det går.
C-strängar är byte
En C-sträng är bara en pekare till byte som avslutas med noll. Ingen längd lagras; endast nullterminatorn anger slutet.
Nullterminerade literaler
Skriv en C-liknande sträng med sentinel-formen. Typen [*:0]const u8 markerar byte som avslutas med 0.
const s: [*:0]const u8 = "hello";Skicka strängar till C
Zigs strängliteraler är redan nullterminerade, så du kan skicka dem direkt till C-funktioner som förväntar sig en char-pekare.
c.puts("done");Läs tillbaka en C-sträng
Om du vill omvandla en C-sträng till en Zig-slice använder du std.mem.span, som går fram till nollbyten för att hitta längden.
const slice = std.mem.span(cstr);void-pekare
C:s void* visas som ?*anyopaque i Zig. Du castar tillbaka den till en konkret pekartyp innan du använder den.
Casta med @ptrCast
För att överbrygga pekartyper över C-gränsen använder du @ptrCast, som tolkar om en pekare utan att ändra adressen.
const p: *Node = @ptrCast(@alignCast(raw));Matcha, gissa inte
Den säkra vanan är att matcha C:s exakta typer: använd c_int för int och span för strängar, så att inget blir fel i tysthet.
Snabb kontroll
Kom ihåg hur Zig omvandlar en C-sträng till en användbar slice.
Sammanfattning
Du har lärt dig att C-typer mappas till ABI-namn som c_int, att C-pekare använder [*c] och att std.mem.span omvandlar C-strängar till slices. 🎯
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 ”C-pekare, strängar och typer” gratis?
Ja – hela texten till ”C-pekare, strängar och typer” 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 ”C-pekare, strängar och typer”?
Överbrygga C:s och Zigs typsystem. 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 ”C-pekare, strängar och typer”?
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
- Importera C-huvuden med @cImport
- Anropa C-funktioner och länka
- C-pekare, strängar och typer
- zig translate-c för att läsa C som Zig