Statique en programmation C

Statique en programmation C
Dans ce tutoriel, nous expliquerons le mot-clé statique en l'appliquant dans des variables et des fonctions. Static est un mot-clé utilisé dans la programmation C, et il peut être appliqué en utilisant la syntaxe suivante:

statique type de données nom de variable

Variables locales statiques

Lorsqu'une variable dans une fonction est statique, la variable préserve sa valeur entre les appels de fonction.

//Exemple 1.c
#inclure
int fun1 ()

int count = 0;
Count ++;
Return Count;

int fun2 ()

statique int count = 0;
Count ++;
Return Count;

int main()

printf ("fun1 1er rendement d'appel:% d \ n", fun1 ());
printf ("fun1 2e retour d'appels:% d \ n \ n", fun1 ());
printf ("fun2 1er retour d'appels:% d \ n", fun2 ());
printf ("fun2 2e retour d'appels:% d \ n", fun2 ());
retour 0;


Dans l'exemple 1.C, nous avons deux fonctions: fun1 () et fun2 (). Dans fun1 (), Nous déclarons une variable (compte) et l'initialisons à 0. Ensuite, nous incrémentons la variable de comptage et renvoyons la valeur résultante. En utilisant principal(), nous appelons fun1 () deux fois, et à chaque fois, une valeur de 1 est retournée car la variable de comptage est effacée lorsque l'appel à fun1 () est terminé. Dans fun2 () Nous avons déclaré la variable de comptage comme une variable statique. Par conséquent, sa valeur est préservée. En utilisant principal(), nous appelons fun2 () Deux fois: la première fois, une valeur de 1 est renvoyée, et la deuxième fois, une valeur de 2 est renvoyée.

Variables globales statiques

Une variable globale statique se comporte de la même manière que les autres variables globales, mais elle ne peut être accessible à partir d'un autre programme C.

Fonctions statiques

En C, les fonctions sont globales par défaut. Cependant, si nous déclarons une fonction statique, la fonction est locale et ne peut être accessible à partir d'un autre programme C.

Initialisation des variables statiques

Si une variable statique n'est pas explicitement initialisée, alors elle est initialisée comme 0.

// Exemple2.c
#inclure
int main()

statique int i;
printf ("valeur de i:% d \ n", i);
retour 0;


Dans l'exemple2.C, nous avons déclaré une variable statique I qui n'est pas initialisée. Cependant, comme la variable est statique, elle est automatiquement initialisée à 0.

Il est important de noter qu'une variable statique doit être initialisée par un littéral constant; Nous ne pouvons pas utiliser la valeur de retour d'une fonction pour initialiser une variable statique.

// Exemple3.c
#inclure
int fun1 ()

retour 5;

int main()

statique int i = fun1 ();
printf ("valeur de i:% d \ n", i);
retour 0;


Dans l'exemple3.C, nous essayons d'initialiser une variable statique en utilisant la valeur de retour de fun1 (). Cependant, comme vous pouvez le voir, une erreur est renvoyée lorsque le code est compilé.

Résumé

La durée de vie d'une variable statique et la durée de vie du programme sont égales.

Si une variable statique n'est pas initialisée, elle prendra une valeur par défaut de 0.

Ni une variable statique globale ni une fonction statique n'est accessible à partir d'un programme autre que celui dans lequel il a été défini.