0Pricing
Zig Academy · Lezione

Puntatori, stringhe e tipi C

Colleghi i sistemi di tipi C e Zig.

Puntatori, stringhe e tipi C è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.

I tipi C vengono tradotti

Quando Zig importa C, ogni tipo C viene associato a un tipo Zig. Un int diventa c_int, quindi le larghezze corrispondono esattamente alla C ABI.

const x: c_int = 10;

Gli interi della C ABI

Zig fornisce nomi che corrispondono alla ABI, come c_int, c_uint, c_long e c_char, così i valori corrispondono a quelli previsti da C.

I puntatori C usano [*c]

Un puntatore C grezzo diventa il tipo speciale [*c]T. Può essere null e viene convertito in modo flessibile, rispecchiando la flessibilità dei puntatori C.

var p: [*c]u8 = null;

Perché [*c] è speciale

Il tipo [*c] fa da collegamento per i puntatori C di lunghezza arbitraria e potenzialmente null. Quando possibile, consente conversioni da e verso slice e puntatori Zig.

Le stringhe C sono byte

Una stringa C è semplicemente un puntatore a byte che termina con zero. Non contiene alcuna lunghezza memorizzata, ma solo il terminatore null.

Stringhe letterali con terminatore null

Scriva una stringa nello stile di C usando la forma con sentinel. Il tipo [*:0]const u8 indica byte che terminano con 0.

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

Passare stringhe a C

Le stringhe letterali di Zig sono già terminate da null, quindi può passarle direttamente alle funzioni C che si aspettano un puntatore a char.

c.puts("done");

Leggere una stringa C

Per trasformare una stringa C in una slice Zig, utilizzi std.mem.span, che cerca il byte null per determinarne la lunghezza.

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

Puntatori void

Il void* di C appare in Zig come ?*anyopaque. Prima di utilizzarlo, lo converta nuovamente in un tipo di puntatore concreto.

Convertire con @ptrCast

Per collegare i tipi di puntatore attraverso il confine con C si utilizza @ptrCast, che reinterpreta un puntatore senza modificarne l'indirizzo.

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

Corrispondere, senza indovinare

L'abitudine più sicura consiste nel corrispondere ai tipi esatti di C: utilizzi c_int per int e span per le stringhe, così nulla viene interpretato erroneamente in modo silenzioso.

Verifica rapida

Ricordi come Zig trasforma una stringa C in una slice utilizzabile.

Riepilogo

Ha imparato che i tipi C corrispondono a nomi della ABI come c_int, che i puntatori C usano [*c] e che std.mem.span trasforma le stringhe C in slice. 🎯

Domande Frequenti

La lezione «Puntatori, stringhe e tipi C» è gratuita?

Sì — il testo completo di «Puntatori, stringhe e tipi C» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.

Cosa imparerò in «Puntatori, stringhe e tipi C»?

Colleghi i sistemi di tipi C e Zig. Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Zig Academy?

Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Puntatori, stringhe e tipi C»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Zig Academy?

Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Importare gli header C con @cImport
  2. Chiamare funzioni C e collegare librerie
  3. Puntatori, stringhe e tipi C
  4. zig translate-c per leggere C come Zig
← Torna a Zig Academy