Qu'est-ce que la classe de stockage en C?
Une classe de stockage représente la visibilité et l'emplacement d'une variable. Il indique à partir de quelle partie du code nous pouvons accéder à une variable. Une classe de stockage en C est utilisée pour décrire les choses suivantes:
- La portée variable.
- L'emplacement où la variable sera stockée.
- La valeur initialisée d'une variable.
- Une durée de vie d'une variable.
- Qui peut accéder à une variable?
Ainsi, une classe de stockage est utilisée pour représenter les informations sur une variable.
REMARQUE: Une variable n'est pas seulement associée à un type de données, à sa valeur, mais également à une classe de stockage.
Il existe au total quatre types de classes de stockage standard. Le tableau ci-dessous représente les classes de stockage en C.
Classe de stockage | But |
auto | C'est une classe de stockage par défaut. |
externe | C'est une variable globale. |
statique | C'est une variable locale qui est capable de renvoyer une valeur même lorsque le contrôle est transféré à l'appel de fonction. |
S'inscrire | C'est une variable qui est stockée dans un registre. |
Dans ce didacticiel C, vous apprendrez différents types de classes de stockage en C avec des exemples-
- Classe de stockage automatique en C
- Classe de stockage externe en C
- Premier fichier: main.c
- Deuxième fichier: original.c
- Classe de stockage statique en C
- Enregistrer la classe de stockage en C
Classe de stockage automatique en C
Les variables définies à l'aide de la classe de stockage automatique sont appelées en tant que variables locales. Auto est synonyme de classe de stockage automatique. Une variable est dans la classe de stockage automatique par défaut si elle n'est pas explicitement spécifiée.
La portée d'une variable automatique est limitée au bloc particulier uniquement. Une fois le contrôle sorti du bloc, l'accès est détruit. Cela signifie que seul le bloc dans lequel la variable auto est déclarée peut y accéder.
Un mot-clé auto est utilisé pour définir une classe de stockage automatique. Par défaut, une variable automatique contient une valeur de garbage.
Example, auto int age;
Le programme ci-dessous définit une fonction avec a deux variables locales
int add(void) {int a=13;auto int b=48;return a+b;}
Nous prenons un autre programme qui montre le niveau de portée "niveau de visibilité" pour les variables automatiques dans chaque code de bloc qui sont indépendamment les unes des autres:
#includeint main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}
PRODUCTION:
3 2 1
Classe de stockage externe en C
Extern signifie classe de stockage externe. La classe de stockage externe est utilisée lorsque nous avons des fonctions globales ou des variables partagées entre deux fichiers ou plus.
Le mot-clé extern est utilisé pour déclarer une variable globale ou une fonction dans un autre fichier pour fournir la référence de variable ou de fonction déjà définie dans le fichier d'origine.
Les variables définies à l'aide d'un mot-clé extern sont appelées comme variables globales. Ces variables sont accessibles dans tout le programme. Notez que la variable externe ne peut pas être initialisée car elle a déjà été définie dans le fichier d'origine.
Example, extern void display();
Premier fichier: main.c
#includeextern i;main() {printf("value of the external integer is = %d\n", i);return 0;}
Deuxième fichier: original.c
#includei=48;
Résultat:
value of the external integer is = 48
Afin de compiler et d'exécuter le code ci-dessus, suivez les étapes ci-dessous
Étape 1) Créer un nouveau projet,
- Sélectionnez l'application console
- Cliquez sur Go
Étape 2) Sélectionnez C et cliquez sur Suivant
Étape 3) Cliquez sur Suivant
Étape 4) Entrez les détails et cliquez sur Suivant
Étape 5) Cliquez sur Terminer
Étape 6) Mettez le code principal comme indiqué dans le programme précédent dans le fichier main.c et enregistrez-le
Étape 7) Créez un nouveau fichier C [Fichier -> nouveau -> Fichier vide, enregistrez-le (comme original.c) et ajoutez-le au projet en cours en cliquant sur "OK" dans la boîte de dialogue.
Étape 8) Mettez et enregistrez le code C du fichier original.c montré dans l'exemple précédent sans la fonction main ().
Étape 9) Générez et exécutez votre projet. Le résultat est montré dans la figure suivante
Classe de stockage statique en C
Les variables statiques sont utilisées dans la fonction / le fichier en tant que variables statiques locales. Ils peuvent également être utilisés comme variable globale
- La variable locale statique est une variable locale qui conserve et stocke sa valeur entre les appels de fonction ou le bloc et reste visible uniquement pour la fonction ou le bloc dans lequel elle est définie.
- Les variables globales statiques sont des variables globales visibles uniquement par le fichier dans lequel elles sont déclarées.
Example: static int count = 10;
Gardez à l'esprit que la variable statique a une valeur initiale par défaut de zéro et n'est initialisée qu'une seule fois dans sa durée de vie.
#include/* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}
Résultat:
iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9
Les variables globales sont accessibles dans tout le fichier tandis que les variables statiques ne sont accessibles qu'à la partie particulière d'un code.
La durée de vie d'une variable statique est dans tout le code du programme. Une variable qui est déclarée ou initialisée à l'aide d'un mot-clé static contient toujours zéro comme valeur par défaut.
Enregistrer la classe de stockage en C
Vous pouvez utiliser la classe de stockage de registre lorsque vous souhaitez stocker des variables locales dans des fonctions ou des blocs dans des registres de la CPU au lieu de la RAM pour avoir un accès rapide à ces variables. Par exemple, les «compteurs» sont un bon candidat pour être stockés dans le registre.
Example: register int age;
Le mot clé register est utilisé pour déclarer une classe de stockage de registre. Les variables déclarées à l'aide de la classe de stockage de registre ont une durée de vie tout au long du programme.
Il est similaire à la classe de stockage automatique. La variable est limitée au bloc particulier. La seule différence est que les variables déclarées à l'aide de la classe de stockage de registre sont stockées dans des registres de CPU au lieu d'une mémoire. Le registre a un accès plus rapide que celui de la mémoire principale.
Les variables déclarées à l'aide de la classe de stockage register n'ont pas de valeur par défaut. Ces variables sont souvent déclarées au début d'un programme.
#include/* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}
PRODUCTION:
error: address of register variable 'weight' requested
Le tableau suivant résume les principales caractéristiques de chaque classe de stockage qui sont couramment utilisées en programmation C
Classe de stockage | Déclaration | Espace de rangement | Valeur initiale par défaut | Portée | Durée de vie |
auto | À l'intérieur d'une fonction / d'un bloc | Mémoire | Imprévisible | Dans la fonction / le bloc | Dans la fonction / le bloc |
S'inscrire | À l'intérieur d'une fonction / d'un bloc | Registres CPU | Des ordures | Dans la fonction / le bloc | Dans la fonction / le bloc |
externe | En dehors de toutes les fonctions | Mémoire | Zéro | Tout le fichier et les autres fichiers où la variable est déclarée comme extern | exécution du programme |
Statique (local) | À l'intérieur d'une fonction / d'un bloc | Mémoire | Zéro | Dans la fonction / le bloc | exécution du programme |
Statique (global) | En dehors de toutes les fonctions | Mémoire | Zéro | Global | exécution du programme |
Résumé
Dans ce tutoriel, nous avons discuté des classes de stockage en C, pour résumer:
- Une classe de stockage en C est utilisée pour représenter des informations supplémentaires sur une variable.
- La classe de stockage représente la portée et la durée de vie d'une variable.
- Il indique également qui peut accéder à une variable et d'où?
- Auto, extern, register, static sont les quatre classes de stockage différentes dans un programme C.
- Un spécificateur de classe de stockage en langage C est utilisé pour définir des variables, des fonctions et des paramètres.
- auto est utilisé pour une variable locale définie dans un bloc ou une fonction
- register est utilisé pour stocker la variable dans les registres CPU plutôt que dans un emplacement mémoire pour un accès rapide.
- Static est utilisé pour les variables globales et locales. Chacun a son cas d'utilisation dans un programme C.
- Extern est utilisé pour le partage de données entre les fichiers de projet C.