Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Comprendre les classes de stockage en C : Portée, durée de vie et utilisation

Une classe de stockage définit la portée (visibilité) et la durée de vie des variables et/ou fonctions dans un programme C. Elle précède le type qu'elle modifie. Il existe quatre classes de stockage en C :

Classe de stockage auto

auto est la classe par défaut pour toutes les variables locales.

{ int mount; auto int month; }

Les deux variables sont de la même classe. auto ne s'utilise qu'à l'intérieur des fonctions (variables locales).

Classe de stockage register

register demande au compilateur de stocker la variable dans un registre CPU au lieu de la RAM, pour un accès plus rapide. Taille max = taille d'un registre (généralement un mot). Ne peut pas utiliser l'opérateur unaire & (pas d'adresse mémoire).

{ register int miles; }

À réserver aux variables nécessitant un accès rapide (compteurs). Note : register est une suggestion, pas une garantie — le compilateur peut l'ignorer selon le matériel.

Classe de stockage static

static conserve une variable locale en existence pendant toute la durée du programme, au lieu de la créer/détruire à chaque entrée/sortie de portée. Ainsi, les variables locales static conservent leur valeur entre appels de fonction.

Appliqué à une variable globale, static limite sa portée au fichier où elle est déclarée (liaison interne).

En C, static sur une variable globale n'implique pas de partage entre objets (concept C++), mais bien une liaison interne.

Exemple

#include <stdio.h>
void func(void);
static int count = 5;  // variable globale static (liaison interne)

int main() {
    while (count--) {
        func();
    }
    return 0;
}

void func(void) {
    static int i = 5;  // variable locale static
    i++;
    printf("i = %d, count = %d\n", i, count);
}

Résultat :

i = 6, count = 4
i = 7, count = 3
i = 8, count = 2
i = 9, count = 1
i = 10, count = 0

Classe de stockage extern

extern donne une référence à une variable globale visible dans TOUS les fichiers du programme. La variable ne peut pas être initialisée dans la déclaration extern ; elle pointe vers un emplacement de stockage défini ailleurs.

Utilisé quand plusieurs fichiers partagent une variable ou fonction globale.

Fichier 1 : main.c

#include <stdio.h>
int count = 5;              // définition
extern void write_extern(); // déclaration de fonction

int main() {
    write_extern();
    return 0;
}

Fichier 2 : support.c

#include <stdio.h>
extern int count;           // référence à la variable définie dans main.c

void write_extern(void) {
    printf("count = %d\n", count);
}

Compilation :

$ gcc main.c support.c

Produit a.out. Exécution :

count = 5

Langue C

  1. Classes et objets C++ : Guide pratique de la programmation orientée objet
  2. Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
  3. Comprendre les classes de stockage en C : Portée, durée de vie et performance
  4. Structures C++ vs Classes : guide pratique pour développeurs embarqués
  5. Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
  6. Python list.count() : Guide Expert avec Exemples Pratiques
  7. Maîtriser Java : Comprendre les Objets, Classes et Concepts POO de Base
  8. Comprendre les classes de stockage en C++ : Portée, durée de vie et utilisation
  9. Interfaces C++ : Maîtriser les classes abstraites et fonctions virtuelles pures