Maison  >  Article  >  développement back-end  >  Où sont stockées les variables statiques en C/C++ ?

Où sont stockées les variables statiques en C/C++ ?

王林
王林avant
2023-09-15 21:09:031305parcourir

Où sont stockées les variables statiques en C/C++ ?

Les variables statiques sont des variables qui restent en mémoire pendant l'exécution du programme, c'est-à-dire que leur cycle de vie s'étend sur toute la durée d'exécution du programme. Ceci est différent des variables automatiques, qui ne restent en mémoire que pendant l'exécution de la fonction et sont détruites à la fin de la fonction.

Les variables statiques sont stockées dans le segment de données de la mémoire. Le segment de données fait partie de l'espace d'adressage virtuel du programme.

Toutes les variables statiques qui ne sont pas explicitement initialisées ou initialisées à zéro sont stockées dans le segment de données non initialisé (également appelé segment de données non initialisé). segment BSS). En revanche, les variables statiques initialisées sont stockées dans le segment de données initialisé.

L'exemple est le suivant -

static int x = 5;
static int y;

The static variable x is stored in the initialized data segment and the static variable y is stored in the BSS segment.

Le programme qui démontre les variables statiques du langage C est le suivant -

Exemple

Démonstration en direct

#include<stdio.h>
int func(){
   static int i = 4 ;
   i++;
   return i;
}

int main(){
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());

   return 0;
}

Le résultat du programme ci-dessus est le suivant -

5
6
7
8
9
10

Maintenant comprenons le programme ci-dessus.

Dans la fonction func(), i est une variable statique initialisée à 4. Il est donc stocké dans le segment de données d'initialisation. Ensuite, i est incrémenté et sa valeur est renvoyée. L'extrait de code montrant cela est le suivant -

int func(){
   static int i = 4 ;
   i++;
   return i;
}

Dans la fonction main(), la fonction func() est appelée 6 fois et renvoie la valeur de i imprimée. Puisque i est une variable statique, elle reste en mémoire et fournit une valeur cohérente pendant l'exécution du programme. Un extrait de code montrant ceci est ci-dessous -

printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer