Zig Academy · leksjon

C-pekere, strenger og typer

Bygg bro mellom C- og Zig-typene.

Leksjon 3 av 413 trinn

C-pekere, strenger og typer er en gratis leksjon i Zig Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Zig Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Zig Academy inneholder totalt 4 leksjoner.

C-typer blir oversatt

Når Zig importerer C, tilordnes hver C-type en Zig-type. En int blir c_int, slik at bredden samsvarer nøyaktig med C-ABI-et.

const x: c_int = 10;

Heltallene i C-ABI-et

Zig tilbyr ABI-samsvarende navn som c_int, c_uint, c_long og c_char, slik at verdiene dine passer med det C forventer.

C-pekere bruker [*c]

En rå C-peker blir typen [*c]T. Den kan være null og konverteres løst, slik at den gjenspeiler C sine fleksible pekere.

var p: [*c]u8 = null;

Hvorfor [*c] er spesiell

Typen [*c] bygger bro mellom pekere i C, som kan ha vilkårlig lengde og kanskje være null. Den kan koer­seres til og fra Zig-slices og pekere der det er mulig.

C-strenger er byte

En C-streng er bare en peker til byte som avsluttes med null. Det er ingen lagret lengde, bare nullterminatoren.

Nullterminerte literaler

Skriv en C-lignende streng med sentinel-formen. Typen [*:0]const u8 markerer byte som avsluttes med 0.

const s: [*:0]const u8 = "hello";

Send strenger til C

Zig-strengliteraler er allerede nullterminerte, så du kan sende dem direkte til C-funksjoner som forventer en char-peker.

c.puts("done");

Les en C-streng tilbake

For å gjøre en C-streng om til en Zig-slice bruker du std.mem.span, som går frem til nullbyten for å finne lengden.

const slice = std.mem.span(cstr);

void-pekere

C sin void* vises som ?*anyopaque i Zig. Du konverterer den tilbake til en konkret pekertype før du bruker den.

Konverter med @ptrCast

Å bygge bro mellom pekertyper over C-grensen gjøres med @ptrCast, som tolker en peker på nytt uten å endre adressen.

const p: *Node = @ptrCast(@alignCast(raw));

Samsvar, ikke gjett

Den trygge vanen er å samsvare med C sine nøyaktige typer: bruk c_int for int og span for strenger, slik at ingenting blir feil i stillhet.

Hurtigsjekk

Husk hvordan Zig gjør en C-streng om til en brukbar slice.

Oppsummering

Du har lært at C-typer tilordnes ABI-navn som c_int, at C-pekere bruker [*c], og at std.mem.span gjør C-strenger om til slices. 🎯

Gratis å komme i gang

Lær deg Zig med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «C-pekere, strenger og typer» gratis?

Ja – hele teksten i «C-pekere, strenger og typer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Zig Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Zig Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «C-pekere, strenger og typer»?

Bygg bro mellom C- og Zig-typene. Du øver på Zig Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Zig Academy?

Ingen tidligere erfaring er nødvendig. Zig Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «C-pekere, strenger og typer»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Zig Academy-leksjonen?

Ja. Alle Zig Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Importere C-headers med @cImport
  2. Kalle C-funksjoner og koble
  3. C-pekere, strenger og typer
  4. zig translate-c for å lese C som Zig
← Tilbake til Zig Academy