Retour au cours

Introduction aux variables et fonctions statiques

Langage C : de Zéro à Héros - Le Guide Complet pour Débutants

Leçon 58 : Introduction aux variables et fonctions statiques

Le mot-clé static a des significations différentes selon qu'il est appliqué à l'intérieur d'une fonction, à une variable globale ou à une fonction.

1. Variables locales statiques (Extension de durée de vie)

Lorsqu'une variable locale est déclarée static, sa portée reste locale à la fonction, mais sa durée de vie est étendue à toute la durée du programme. Elle conserve sa valeur entre les appels de fonction.

c void compter_appels() { static int nb_appels = 0; // Initialisée une seule fois nb_appels++; printf("Fonction appelée %d fois.\n", nb_appels); }

int main() { compter_appels(); // 1 compter_appels(); // 2 return 0; }

2. Variables globales statiques (Limitation de visibilité)

Lorsqu'une variable globale est déclarée static, sa visibilité (liaison) est limitée au fichier dans lequel elle est définie. Elle ne peut pas être consultée par d'autres fichiers à l'aide du mot-clé extern.

  • Avantage : Évite les conflits de noms et renforce l'encapsulation au sein d'un module.

3. Fonctions statiques (Limitation de visibilité)

Lorsqu'une fonction est déclarée static, elle ne peut être appelée qu'à partir du fichier source où elle est définie. Cela permet de créer des fonctions utilitaires « privées » pour un module.

c // utilitaire.c static void journal_interne(char *msg) { ... } // Ne peut pas être appelée depuis main.c

void fonction_publique() { journal_interne("Appel de la fonction publique"); // OK }