Introduction aux classes de stockage C

Chaque valeur ou nombre doit être stocké dans un endroit pour une utilisation ultérieure, non? Cela peut être fait en utilisant des variables en C. Les variables sont des zones de stockage utilisées dans nos programmes. Chaque variable sera d'un type spécifique comme entier, caractère et aura également une taille et une disposition spécifiques en fonction de leur type. Chaque type de variable doit être stocké dans une partie spécifique de la mémoire et aura des autorisations d'accès restreintes ou spécifiques. Classes de stockage en C détermine dans quelle partie de la mémoire chaque variable doit être stockée et décide également de la portée (visibilité) de la variable. Il existe quatre types de classes de stockage: automatique, externe, statique et registre. Un spécificateur de stockage peut être mentionné avec la variable.

Types de classes de stockage en C

Les types de classes de stockage en C sont les suivants

1. Classe de stockage automatique

Toutes les variables déclarées dans une fonction ou un bloc, seront stockées dans un spécificateur automatique par défaut même s'il n'est pas explicitement défini. Le spécificateur de cette classe de stockage est «auto». La portée ou la visibilité des variables dans la classe de stockage automatique est locale au bloc ou à la fonction définie. La variable sera détruite à la sortie de la fonction ou du bloc.

Cela peut être mieux expliqué avec un exemple. Prenons l'exemple donné ci-dessous:

Code:

int main() (
int i = 2;
( int i = 4;
printf(“%d\n”, i);
)
printf(“%d\n”, i);
)

Production:

4

2

Ici, une variable I de type entier est déclarée en premier avec la valeur 2 qui lui est affectée. Ensuite, à l'intérieur d'une boucle ou d'un bloc, la variable I du même type entier est déclarée avec la valeur 4 qui lui est affectée. Si le spécificateur de stockage n'est pas mentionné, par défaut, il sera considéré comme automatique. Dans la première instruction printf, qui est mentionnée à l'intérieur du bloc, imprimera 4 lors de l'impression de la valeur de I. Alors que dans la deuxième instruction printf qui est mentionnée à l'extérieur du bloc, imprimera la valeur de I comme 2, la valeur qui est mentionnée à l'extérieur le bloc. Il est préférable d'initialiser une valeur aux variables automatiques car il y a des chances d'obtenir n'importe quelle valeur poubelle parfois si l'initialisation n'est pas effectuée. Cet exemple donne une image claire des variables automatiques et de la portée locale.

2. Enregistrer la classe de stockage

Les variables stockées dans la classe de stockage de registre auront également une portée locale, ce qui signifie qu'elle est accessible ou visible uniquement dans le bloc dans lequel elle est déclarée. Ce stockage est similaire à auto, mais la principale différence est que les variables auto sont stockées en mémoire tandis que les variables de registre sont stockées dans les registres CPU. Cela se fait si nous voulons accéder très fréquemment à la variable. Ceux-ci peuvent être utilisés plus rapidement. Seules quelques variables sont stockées à l'aide de spécificateurs de registre. S'il n'y a pas d'espace dans le registre, il est stocké uniquement dans la mémoire. Aucune valeur initiale n'est affectée aux variables de registre. De plus, l'opérateur & (adresse-de) ne peut pas être utilisé sur les variables de registre. Par exemple, les variables utilisées pour les compteurs ou les types d'utilisation similaires sont stockées à l'aide d'un spécificateur de registre.

3. Classe de stockage statique

La variable, qu'elle soit globale ou locale, est stockée à l'aide d'un spécificateur statique dans la classe de stockage statique lorsque la variable doit être déclarée une fois et la valeur doit être conservée. Lorsqu'une variable est déclarée comme statique, la valeur est enregistrée ou conservée entre les appels de fonction. Le stockage permanent est créé et il n'est déclaré qu'une seule fois. Lorsqu'une variable locale est déclarée comme statique, un stockage permanent est créé pour elle et la valeur est conservée chaque fois qu'elle est utilisée. Toujours selon la portée de la variable locale habituelle, les variables locales statiques ne sont également visibles que pour la fonction ou le bloc où elle est définie. Lorsqu'une variable globale est déclarée comme statique, similaire au stockage local statique, un stockage permanent est créé et il n'est déclaré qu'une seule fois. Mais même si elle est globale, ces variables ne sont visibles que dans le fichier dans lequel elle est définie.

Les variables statiques peuvent être clairement représentées à l'aide de l'exemple ci-dessous:

Code:

int samplefunc() (
static int a = 0;
a = a+2;
return a;
)
int main() (
int result1 = samplefunc();
int result2 = samplefunc();
printf("%d\n", result1);
printf("%d\n", result2);
)

Production:

2

4

Ici, dans le programme ci-dessus, lorsque le samplefunc () est appelé, la variable a est définie et initialisée la première fois et un stockage permanent est créé pour elle. Par l'expression mathématique utilisée dans la fonction, la valeur de a devient alors 2. Mais lorsque le même samplefunc () est appelé la deuxième fois, la variable a n'est pas définie ou initialisée à nouveau, elle prend plutôt la dernière valeur conservée et continue l'opération faire le résultat final comme 4. C'est l'utilisation principale et l'avantage des variables statiques.

4. Classe de stockage externe

La variable déclarée comme externe, montre que la variable est définie ailleurs dans un autre programme. Ces variables externes sont utilisées lorsque nous voulons que toute variable ou fonction définie dans un programme soit également utilisée dans un autre fichier. Les variables avec spécificateur externe sont stockées dans la classe de stockage externe. Lorsque la variable est déclarée comme extern est un programme, elle spécifie le lien externe et, par conséquent, elle n'est pas définie ou initialisée à nouveau. Le stockage est alloué un seul et également initialisé une seule fois. Si les variables externes sont à nouveau initialisées avec une autre valeur dans le programme externe, nous obtiendrons une erreur indiquant «Redéfinition de la variable».

Les variables externes sont expliquées à l'aide de l'exemple ci-dessous:

Code:

Prg1.c

int count;
int main() (
count = 10;
)

Prg2.c

extern int count;
int main() (
printf(“%d”, count);
)

Production:

dix

Ici, le nombre de variables entières est déclaré dans le premier programme C (Prg1.c) et à l'intérieur de la fonction principale, il est initialisé à la valeur 10. Dans le deuxième programme C, la même variable de nombre est déclarée à l'aide d'un spécificateur externe, qui spécifie que il existe un lien externe et la valeur est extraite du stockage et la valeur 10 est donnée au nombre de valeurs lorsque nous l'imprimons dans le deuxième programme. Il s'agit de l'utilisation de variables externes. Ainsi, selon le but différent, chaque classe de stockage est utilisée pour les variables appropriées et elle est déclarée avec les spécificateurs correspondants.

Articles recommandés

Ceci est un guide des classes de stockage C. Nous discutons ici des types de classes de stockage qui incluent la classe de stockage automatique, la classe de stockage de registre, la classe de stockage statique et la classe de stockage externe. Vous pouvez également consulter les articles suivants pour en savoir plus–

  1. Qu'est-ce que JavaBeans?
  2. ES6 vs ES5
  3. C ++ contre Visual C ++
  4. Performances C vs C ++