Bases des variables statiques
Qu'est-ce qu'une variable statique ?
Une variable statique est un type spécial de variable en programmation C qui conserve sa valeur entre les appels de fonctions et a une durée de vie qui s'étend à toute l'exécution du programme. Contrairement aux variables locales ordinaires, les variables statiques ne sont initialisées qu'une seule fois et conservent leur valeur tout au long de l'exécution du programme.
Caractéristiques clés des variables statiques
Allocation mémoire
Les variables statiques sont stockées dans le segment de données de la mémoire, ce qui signifie qu'elles ont une emplacement mémoire fixe tout au long de l'exécution du programme. Ceci est différent des variables automatiques (locales) qui sont créées et détruites à chaque appel de fonction.
graph TD
A[Segments de mémoire] --> B[Segment de texte]
A --> C[Segment de données]
A --> D[Segment de tas]
A --> E[Segment de pile]
C --> F[Variables statiques]
Initialisation
Les variables statiques sont automatiquement initialisées à zéro si aucune initialisation explicite n'est fournie. Ceci est une différence clé par rapport aux variables automatiques, qui ont des valeurs indéfinies si elles ne sont pas initialisées explicitement.
Types de variables statiques
Variables statiques locales
Déclarées à l'intérieur d'une fonction et conservent leur valeur entre les appels de fonction.
#include <stdio.h>
void countCalls() {
static int count = 0;
count++;
printf("Fonction appelée %d fois\n", count);
}
int main() {
countCalls(); // Affiche : Fonction appelée 1 fois
countCalls(); // Affiche : Fonction appelée 2 fois
return 0;
}
Variables statiques globales
Déclarées en dehors de toute fonction, avec une visibilité limitée au fichier source actuel.
static int globalCounter = 0; // Visible uniquement dans ce fichier
void incrementCounter() {
globalCounter++;
}
Comparaison avec d'autres types de variables
Type de variable |
Portée |
Durée de vie |
Valeur par défaut |
Automatique |
Locale |
Fonction |
Indéfinie |
Statique locale |
Locale |
Programme |
Zéro |
Statique globale |
Fichier |
Programme |
Zéro |
Avantages des variables statiques
- État persistant entre les appels de fonction
- Surcharge d'allocation mémoire réduite
- Amélioration des performances pour les fonctions appelées fréquemment
- Encapsulation des données au sein d'un seul fichier (pour les variables statiques globales)
Bonnes pratiques
- Utilisez les variables statiques lorsque vous avez besoin de maintenir un état entre les appels de fonction.
- Limitez l'utilisation des variables statiques globales pour améliorer la modularité du code.
- Soyez conscient des implications mémoire des variables statiques.
LabEx recommande de considérer les variables statiques comme un outil puissant pour gérer l'état du programme et la mémoire efficacement.