Zig Academy · Lektion

C-pekare, strängar och typer

Överbrygga C:s och Zigs typsystem.

Lektion 3 av 413 steg

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. 🎯

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 ”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

  1. Importera C-huvuden med @cImport
  2. Anropa C-funktioner och länka
  3. C-pekare, strängar och typer
  4. zig translate-c för att läsa C som Zig
← Tillbaka till Zig Academy