0Pricing
Zig Academy · Leçon

Pointeurs constants et alignement

Exprimez un accès en lecture seule et une disposition mémoire.

Pointeurs constants et alignement est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.

Accès en lecture seule

Vous voulez souvent partager une valeur tout en promettant de ne pas la modifier. Un pointeur constant autorise la lecture tout en interdisant les écritures.

Le type *const T

Écrivez un pointeur vers des données immuables sous la forme *const T. Vous pouvez les lire par son intermédiaire, mais affecter sa cible provoque une erreur de compilation.

const x: i32 = 5;
const p: *const i32 = &x;

Const se transmet avec &

Prendre l’adresse d’une valeur const produit automatiquement un *const T, ce qui préserve l’immuabilité dans le type.

const v: u8 = 9;
const p = &v; // *const u8

Un pointeur modifiable se convertit en pointeur constant

Un *T se convertit librement en *const T, puisque supprimer le droit d’écriture est toujours sans danger. L’inverse n’est pas autorisé.

var n: i32 = 1;
const ro: *const i32 = &n;

Pourquoi préférer const

Accepter un paramètre *const T indique aux appelants que vous ne ferez que le lire, ce qui rend les fonctions plus fiables.

fn show(p: *const i32) void {
    // read only
}

Ce que signifie l’alignement

Chaque type possède un alignement : la limite d’adresse sur laquelle il doit commencer. Un u32 a généralement besoin d’une adresse divisible par quatre.

Interroger avec @alignOf

Le composant intégré @alignOf(T) renvoie l’alignement requis d’un type en octets, tout comme @sizeOf renvoie sa taille.

const a = @alignOf(u32);

L’alignement dans le type

Vous pouvez indiquer l’alignement d’un pointeur dans son type avec align, comme dans *align(4) u8, afin d’exiger une limite précise.

var p: *align(4) u8 = undefined;

Pourquoi l’alignement est important

Le matériel lit plus rapidement les données alignées, et certains processeurs déclenchent une faute lors d’un accès non aligné. Zig suit l’alignement dans le type pour garantir cela.

Alignement supérieur ou inférieur

Un pointeur peut garantir un alignement plus strict que celui par défaut, mais vous ne pouvez pas l’affaiblir sans une conversion explicite comme @alignCast.

Const et align ensemble

Les deux se combinent naturellement : un *const align(8) T est un pointeur en lecture seule qui garantit également une limite de huit octets.

Vérification rapide

Vous écrivez une fonction qui doit seulement lire la valeur située derrière un pointeur. Quel type de paramètre l’exprime le mieux ?

Récapitulatif

Un pointeur *const T partage des données en lecture seule et se convertit depuis *T, tandis que l’alignement, visible via @alignOf et align(n), garantit un accès à la mémoire correct et rapide. 🎯

Questions Fréquemment Posées

La leçon « Pointeurs constants et alignement » est-elle gratuite ?

Oui — le texte complet de « Pointeurs constants et alignement » 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 constants et alignement » ?

Exprimez un accès en lecture seule et une disposition mémoire. 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 4 sur 4.

Combien de temps prend la leçon « Pointeurs constants et alignement » ?

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. Pointeurs vers un seul élément avec *T
  2. Déréférencement avec ptr.*
  3. Pointeurs vers plusieurs éléments [*]T
  4. Pointeurs constants et alignement
← Retour à Zig Academy