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; }
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!