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

Classes de stockage en C :auto, externe, statique, classe de registre en C

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 éléments suivants :

Ainsi, une classe de stockage est utilisée pour représenter les informations sur une variable.

NOTE :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 Objectif auto Il s'agit d'une classe de stockage par défaut.extern 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.register C'est une variable 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

Les variables définies à l'aide de la classe de stockage automatique sont appelées variables locales. Auto signifie 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 que le contrôle sort 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 parasite.

Example, auto int age;

Le programme ci-dessous définit une fonction avec 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 uns des autres :

#include <stdio.h>
int main( )
{
  auto int j = 1;
  {
    auto int j= 2;
    {
      auto int j = 3;
      printf ( " %d ", j);
    }
    printf ( "\t %d ",j);
  }
  printf( "%d\n", j);}

SORTIE :

 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.

Mot cléextern sert à déclarer une variable ou une fonction globale dans un autre fichier pour fournir la référence de la variable ou de la fonction déjà définie dans le fichier d'origine.

Les variables définies à l'aide d'un mot clé extern sont appelées variables globales. Ces variables sont accessibles tout au long du programme. Notez que la variable externe ne peut pas être initialisée, elle a déjà été définie dans le fichier d'origine.

Example, extern void display();

Premier fichier :main.c

#include <stdio.h>
extern i;
main() {
   printf("value of the external integer is = %d\n", i);
   return 0;}

Deuxième fichier :original.c

#include <stdio.h>
i=48;

Résultat :

 value of the external integer is = 48


Pour compiler et exécuter le code ci-dessus, suivez les étapes ci-dessous

Étape 1) Créer un nouveau projet,

  1. Sélectionner l'application console
  2. Cliquez sur OK

É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 (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) Créez 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

Example: static int count = 10;

Gardez à l'esprit que la variable statique a une valeur initiale par défaut zéro et n'est initialisée qu'une seule fois dans sa vie.

#include <stdio.h> /* 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= 7
iteration=15 and counter= 8
iteration=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 l'ensemble du code du programme. Une variable déclarée ou initialisée à l'aide du 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 CPU au lieu de RAM pour avoir un accès rapide à ces variables. Par exemple, les "compteurs" sont de bons candidats pour être stockés dans le registre.

Example: register int age;

Le mot-clé s'inscrire 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 des registres sont stockées dans les registres du 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 de registre n'ont pas de valeur par défaut. Ces variables sont souvent déclarées en début de programme.

#include <stdio.h> /* 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*/}
}

SORTIE :

error: address of register variable 'weight' requested

Le tableau suivant résume les principales fonctionnalités de chaque classe de stockage qui sont couramment utilisées dans la programmation C

Classe de stockage Déclaration Stockage Valeur initiale par défaut Portée À vie auto À l'intérieur d'une fonction/blocMémoireImprévisibleDans la fonction/blocÀ l'intérieur de la fonction/blocregistre À l'intérieur d'une fonction/blocCPU RegistersGarbageDans la fonction/blocDans la fonction/blocextern En dehors de toutes les fonctionsMemoryZeroEntire le fichier et les autres fichiers où la variable est déclarée comme externprogram runtimeStatic (local) À l'intérieur d'une fonction/blocMémoireZéroÀ l'intérieur de la fonction/blocprogramme d'exécutionStatique (global) En dehors de toutes les fonctionsMemoryZeroGlobalruntime du programme

Résumé

Dans ce tutoriel, nous avons abordé les classes de stockage en C, pour résumer :


Langue C

  1. Classe et objet C#
  2. Mot-clé statique C#
  3. Classe imbriquée C#
  4. Classes et objets C++
  5. Fonction amie C++ et classes amies
  6. Modèles de classe C++
  7. Classe de stockage C
  8. C - Classes de stockage
  9. Classes de stockage en C++