C Academy · Leçon

register et const

Indications et immutabilité

Leçon 4 sur 413 étapes

register et const est une leçon C 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 C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.

L’indication de registre

register suggère qu’une variable soit conservée dans un registre du CPU pour gagner en rapidité. Ce n’est qu’une indication ; les compilateurs modernes l’ignorent généralement.

#include <stdio.h>
int main(void) {
    register int i;
    int sum = 0;
    for (i = 0; i < 5; i++)
        sum += i;
    printf("sum = %d\n", sum);
    return 0;
}

Vous ne pouvez pas obtenir son adresse

Comme une variable register peut ne pas se trouver en mémoire, vous ne pouvez pas obtenir son adresse avec &.

#include <stdio.h>
int main(void) {
    register int x = 10;
    printf("x = %d\n", x);
    return 0;
}

Pourquoi register est rarement utilisé aujourd’hui

Les compilateurs optimisants placent déjà les variables fréquemment utilisées dans des registres. Ce mot-clé est désormais essentiellement historique.

#include <stdio.h>
int main(void) {
    int product = 1;
    for (register int i = 1; i <= 4; i++)
        product *= i;
    printf("product = %d\n", product);
    return 0;
}

Le qualificateur en lecture seule

const rend une variable accessible en lecture seule après son initialisation. Tenter de la modifier provoque une erreur de compilation.

#include <stdio.h>
int main(void) {
    const int DAYS = 7;
    printf("DAYS = %d\n", DAYS);
    return 0;
}

Les constantes expriment l’intention

Utiliser const pour les valeurs fixes rend le code plus clair et le protège contre les modifications accidentelles.

#include <stdio.h>
int main(void) {
    const double PI = 3.14159;
    double r = 2.0;
    printf("area = %.2f\n", PI * r * r);
    return 0;
}

Lecture seule avec les pointeurs

const int *p signifie que la valeur pointée ne peut pas être modifiée par l’intermédiaire de p. Le pointeur lui-même peut toujours changer d’adresse.

#include <stdio.h>
int main(void) {
    int x = 5;
    const int *p = &x;
    printf("*p = %d\n", *p);
    return 0;
}

Pointeur constant

int * const p signifie que le pointeur ne peut pas changer, mais que la valeur vers laquelle il pointe le peut.

#include <stdio.h>
int main(void) {
    int x = 5;
    int * const p = &x;
    *p = 9;
    printf("x = %d\n", x);
    return 0;
}

Paramètres de fonction en lecture seule

Déclarer un paramètre avec const garantit que la fonction ne le modifiera pas, ce qui aide les appelants à comprendre son comportement.

#include <stdio.h>
void show(const int n) {
    printf("n = %d\n", n);
}
int main(void) {
    show(42);
    return 0;
}

Immuable par conception

Préférez const pour toute valeur qui ne devrait pas changer. Cela permet de détecter les bogues lors de la compilation.

#include <stdio.h>
int main(void) {
    const int LIMIT = 100;
    int x = 90;
    if (x < LIMIT)
        printf("under limit\n");
    return 0;
}

Combiner lecture seule et variables globales

Une variable globale const est une constante partagée sûre, disponible dans tout le fichier.

#include <stdio.h>
const int VERSION = 2;
int main(void) {
    printf("VERSION = %d\n", VERSION);
    return 0;
}

Registre et lecture seule ensemble

Vous pouvez même déclarer un compteur de boucle de ces deux façons, bien qu’ici la lecture seule signifie que le corps de la boucle ne doit pas le modifier.

#include <stdio.h>
int main(void) {
    int sum = 0;
    for (int i = 0; i < 3; i++) {
        const int doubled = i * 2;
        sum += doubled;
    }
    printf("sum = %d\n", sum);
    return 0;
}

Vérification rapide

Vérifiez votre compréhension de register et const.

Récapitulatif : registre et lecture seule

Vous avez découvert deux qualificateurs.

  • register suggère un stockage dans un registre, mais est généralement ignoré
  • Vous ne pouvez pas obtenir l’adresse d’une variable de registre
  • const rend une valeur accessible en lecture seule
  • La constance des pointeurs a deux formes : valeur constante ou pointeur constant
  • Utilisez largement const pour plus de sécurité
Gratuit pour commencer

Apprends C avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
39
Leçons
144

Questions Fréquemment Posées

La leçon « register et const » est-elle gratuite ?

Oui — le texte complet de « register et const » 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 C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « register et const » ?

Indications et immutabilité Tu pratiques C 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 C Academy ?

Aucune expérience préalable n'est requise. C 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 « register et const » ?

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 C Academy ?

Oui. Chaque leçon C 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. auto et portée locale
  2. Variables static
  3. extern et global
  4. register et const
← Retour à C Academy