Classe de stockage C

Dans ce didacticiel, vous découvrirez la portée et la durée de vie des variables locales et globales. En outre, vous en apprendrez davantage sur les variables statiques et de registre.

Chaque variable dans la programmation C a deux propriétés: le type et la classe de stockage.

Le type fait référence au type de données d'une variable. Et la classe de stockage détermine la portée, la visibilité et la durée de vie d'une variable.

Il existe 4 types de classe de stockage:

  1. automatique
  2. externe
  3. statique
  4. S'inscrire

Variable locale

Les variables déclarées à l'intérieur d'un bloc sont des variables automatiques ou locales. Les variables locales n'existent qu'à l'intérieur du bloc dans lequel elles sont déclarées.

Prenons un exemple.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

Lorsque vous exécutez le programme ci-dessus, vous obtiendrez un identifiant d'erreur non déclaré i. C'est parce que i est déclaré à l'intérieur du forbloc de boucle. En dehors du bloc, c'est non déclaré.

Prenons un autre exemple.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

Dans l'exemple ci-dessus, n1 est local à main()et n2 est local à func().

Cela signifie que vous ne pouvez pas accéder à la variable n1 à l'intérieur func()car elle n'existe qu'à l'intérieur main(). De même, vous ne pouvez pas accéder à la variable n2 à l'intérieur main()car elle n'existe qu'à l'intérieur func().

Variable globale

Les variables déclarées en dehors de toutes les fonctions sont appelées variables externes ou globales. Ils sont accessibles depuis n'importe quelle fonction à l'intérieur du programme.

Exemple 1: variable globale

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Production

 n = 7

Supposons qu'une variable globale soit déclarée dans file1. Si vous essayez d'utiliser cette variable dans un autre fichier file2, le compilateur se plaindra. Pour résoudre ce problème, le mot extern- clé est utilisé file2pour indiquer que la variable externe est déclarée dans un autre fichier.

Enregistrer la variable

Le registermot-clé est utilisé pour déclarer des variables de registre. Les variables de registre étaient censées être plus rapides que les variables locales.

Cependant, les compilateurs modernes sont très bons pour l'optimisation du code, et il est rare que l'utilisation de variables de registre accélère votre programme.

Sauf si vous travaillez sur des systèmes embarqués où vous savez comment optimiser le code pour l'application donnée, il n'y a pas d'utilisation de variables de registre.

Variable statique

Une variable statique est déclarée à l'aide du staticmot - clé. Par exemple;

 static int i;

La valeur d'une variable statique persiste jusqu'à la fin du programme.

Exemple 2: variable statique

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Production

 6 11

Lors du premier appel de fonction, la valeur de c est initialisée à 1. Sa valeur est augmentée de 5. Désormais, la valeur de c est 6, qui est imprimée à l'écran.

Lors du deuxième appel de fonction, c n'est pas réinitialisé à nouveau à 1. C'est parce que c est une variable statique. La valeur c est augmentée de 5. Maintenant, sa valeur sera 11, qui est imprimée à l'écran.

Articles intéressants...