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

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

王林
Libérer: 2023-09-15 21:09:03
avant
1322 Les gens l'ont consulté

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.
Copier après la connexion

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;
}
Copier après la connexion

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

5
6
7
8
9
10
Copier après la connexion

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;
}
Copier après la connexion

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());
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal