En programmation C, les classes de stockage déterminent la portée , Lifetime et liaison d'une variable ou d'une fonction. Ils contrôlent comment le compilateur gère la mémoire allouée à ces éléments. Décomposons chaque classe de stockage:
1. Automatique (Auto):
* Scope: Local au bloc dans lequel il est déclaré.
* Lifetime: N'existe que lors de l'exécution du bloc où il est déclaré.
* liaison: Pas de liaison (pas accessible depuis l'extérieur de la fonction).
* Exemple:
`` C
int main () {
int x =10; // 'x' est une variable automatique
// ...
}
`` '
2. Externe (externe):
* Scope: Portée mondiale.
* Lifetime: Existe tout au long de l'exécution du programme.
* liaison: Liaison externe (accessible à partir d'autres fichiers).
* Exemple:
`` C
// dans le fichier1.c
extern int y; // déclare «y» comme externe
// dans File2.c
int y =20; // définit «y»
`` '
3. Statique:
* Scope: Local au bloc où il est déclaré.
* Lifetime: Existe pour l'ensemble de l'exécution du programme.
* liaison: Liaison interne (accessible uniquement dans le fichier actuel).
* Exemple:
`` C
void myfunc () {
statique int count =0; // 'Count' conserve sa valeur entre les appels de fonction
Count ++;
printf ("count:% d \ n", count);
}
`` '
4. Enregistrement:
* Scope: Local au bloc où il est déclaré.
* Lifetime: N'existe que lors de l'exécution du bloc où il est déclaré.
* liaison: Pas de liaison (pas accessible depuis l'extérieur de la fonction).
* Exemple:
`` C
void myfunc () {
enregistrer int i; // demande au compilateur de stocker «i» dans un registre
pour (i =0; i <10; i ++) {
// ...
}
}
`` '
Points clés:
* Scope: Détermine où dans le programme une variable ou une fonction est accessible.
* Lifetime: Contrôle combien de temps la variable existe en mémoire.
* liaison: Dicte si une variable ou une fonction est accessible à partir d'autres fichiers source.
Pourquoi les classes de stockage sont-elles importantes?
Comprendre les cours de stockage est crucial pour une programmation C efficace:
* Gestion de la mémoire: Ils vous aident à contrôler la façon dont la mémoire est allouée et traitée.
* Organisation du code: Ils facilitent la modularité et la réutilisabilité du code.
* Optimisation des performances: Vous pouvez utiliser un «enregistrement» pour potentiellement améliorer les performances en stockant des variables dans les registres.
Informations supplémentaires:
* Les classes de stockage sont définies à l'aide de mots clés dans la variable ou la déclaration de fonction.
* Le mot-clé `` Auto` est souvent omis car il s'agit de la classe de stockage par défaut pour les variables locales.
* Le mot-clé «Registre» est un indice du compilateur, et il peut ne pas toujours être honoré.
Faites-moi savoir si vous souhaitez explorer plus en détail une classe de stockage spécifique ou avoir d'autres questions.
|