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

Quand et comment les variables statiques au niveau de la fonction en C sont-elles allouées et initialisées ?

Patricia Arquette
Libérer: 2024-11-18 02:12:02
original
182 Les gens l'ont consulté

When and How Are Function-Level Static Variables in C   Allocated and Initialized?

Allocation et initialisation de variables statiques au niveau de la fonction

Les variables statiques au niveau de la fonction en C sont un type de données qui persistent tout au long de la vie du programme. Contrairement aux variables globales, elles ne sont pas déclarées au niveau global, mais plutôt dans le cadre d'une fonction. Cela soulève des questions sur le moment où ces variables sont allouées et initialisées.

Contrairement aux variables déclarées globalement, qui sont allouées et initialisées au début du programme, les variables statiques au niveau de la fonction sont allouées et initialisées lors du premier appel. à la fonction dans laquelle ils sont définis. Cela est évident dans l'exemple de code fourni :

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

La variable statique globalish est initialisée lors du premier appel à la fonction doSomething. Avant cela, sa valeur n'est pas définie. Ce résultat a été confirmé par un programme de test qui imprimait des événements liés à la création et à la destruction d'objets instanciés dans différentes portées.

Ce comportement est attribué au fait que les variables statiques sont stockées dans une zone statique de mémoire qui est partagé entre tous les appels à la même fonction. Ainsi, la valeur initiale reste persistante d'un appel à l'autre, à moins qu'elle ne soit explicitement modifiée dans la fonction.

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