Maison > développement back-end > C++ > le corps du texte

En quoi les variables statiques au niveau de la fonction diffèrent-elles en termes d'allocation et d'initialisation par rapport aux variables globales et locales ?

Patricia Arquette
Libérer: 2024-11-15 10:25:02
original
170 Les gens l'ont consulté

How Do Function-Level Static Variables Differ in Allocation and Initialization Compared to Global and Local Variables?

Allocation et initialisation des variables statiques au niveau des fonctions : une plongée plus approfondie

Bien que les variables globales soient généralement allouées et initialisées au démarrage du programme, l'allocation et l'initialisation des variables statiques au niveau de la fonction suivent un modèle plus nuancé.

Lorsque les variables statiques au niveau de la fonction sont allouées

Contrairement aux variables globales, les variables statiques au niveau de la fonction sont attribué lors de la première saisie de la fonction. Cela contraste avec l'allocation de variables locales, qui se produit à chaque fois que la fonction est appelée.

Lorsque les variables statiques au niveau de la fonction sont initialisées

L'initialisation de la fonction Les variables statiques de niveau n'apparaissent qu'une seule fois, la première fois que la fonction est saisie. En effet, le mot clé static garantit que la variable conserve sa valeur lors de plusieurs appels de fonction.

Un exemple de clarté

Considérez l'extrait de code suivant :

void doSomething() {
  static bool globalish = true;
  // ...
}
Copier après la connexion

Lorsque l'exécution du programme atteint la fonction doSomething pour la première fois, la variable globale sera allouée dans le cadre de pile de la fonction. Ensuite, son initialisation à true aura lieu. Lors des appels ultérieurs à la fonction doSomething, la variable globale sera déjà allouée et initialisée, et sa valeur sera conservée.

Conclusion

En résumé, au niveau de la fonction les variables statiques sont allouées lors de la première saisie de la fonction et ne sont initialisées qu'une seule fois, lors de cette première entrée. Ce comportement diffère à la fois des variables globales et des variables locales, fournissant un mécanisme unique et utile pour conserver les données persistantes au sein des fonctions.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal