0Pricing
Zig Academy · Leçon

Pointeurs, chaînes et types C

Faites le lien entre les systèmes de types C et Zig.

Pointeurs, chaînes et types C est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.

Les types C sont traduits

Lorsque Zig importe du C, chaque type C correspond à un type Zig. Un int devient c_int, de sorte que les largeurs correspondent exactement à l'ABI C.

const x: c_int = 10;

Les entiers de l'ABI C

Zig fournit des noms correspondant à l'ABI, comme c_int, c_uint, c_long et c_char, afin que vos valeurs correspondent à ce qu'attend C.

Les pointeurs C utilisent [*c]

Un pointeur C brut devient le type spécial [*c]T. Il peut être nul et se convertit de manière souple, à l'image des pointeurs flexibles de C.

var p: [*c]u8 = null;

Pourquoi [*c] est spécial

Le type [*c] fait le pont avec les pointeurs C de longueur quelconque et potentiellement nuls. Il se convertit, lorsque c'est possible, en tranches et pointeurs Zig, et inversement.

Les chaînes C sont des octets

Une chaîne C est simplement un pointeur vers des octets se terminant par zéro. Aucune longueur n'est enregistrée : seul le terminateur nul l'indique.

Littéraux terminés par zéro

Écrivez une chaîne de style C avec la forme à sentinelle. Le type [*:0]const u8 indique des octets qui se terminent par 0.

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

Passer des chaînes à C

Les littéraux de chaîne Zig sont déjà terminés par zéro ; vous pouvez donc les transmettre directement aux fonctions C qui attendent un pointeur vers char.

c.puts("done");

Récupérer une chaîne C

Pour transformer une chaîne C en tranche Zig, utilisez std.mem.span, qui parcourt les octets jusqu'à l'octet nul pour en trouver la longueur.

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

Les pointeurs void

Le void* de C apparaît en Zig sous la forme ?*anyopaque. Convertissez-le à nouveau en pointeur concret avant de l'utiliser.

Convertir avec @ptrCast

Le passage d'un type de pointeur à un autre à la frontière C utilise @ptrCast, qui réinterprète un pointeur sans modifier l'adresse.

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

Faire correspondre, ne pas deviner

La bonne habitude consiste à faire correspondre les types exacts de C : utilisez c_int pour int et span pour les chaînes, afin qu'aucune erreur ne reste silencieuse.

Vérification rapide

Rappelez-vous comment Zig transforme une chaîne C en tranche utilisable.

Récapitulatif

Vous avez appris que les types C correspondent à des noms d'ABI comme c_int, que les pointeurs C utilisent [*c] et que std.mem.span transforme les chaînes C en tranches. 🎯

Questions Fréquemment Posées

La leçon « Pointeurs, chaînes et types C » est-elle gratuite ?

Oui — le texte complet de « Pointeurs, chaînes et types C » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Pointeurs, chaînes et types C » ?

Faites le lien entre les systèmes de types C et Zig. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Zig Academy ?

Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Pointeurs, chaînes et types C » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?

Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Importer des en-têtes C avec @cImport
  2. Appeler des fonctions C et effectuer la liaison
  3. Pointeurs, chaînes et types C
  4. zig translate-c pour lire le C comme du Zig
← Retour à Zig Academy