Quelle est la différence entre les variables statiques locales et globales?


Meilleure réponse

global & local: est lié à la portée, cest-à-dire où peut être utilisé

static: est lié au temps et à la volatilité, cest-à-dire combien de temps peut être utilisé

La variable statique du programme C & C ++ est définie (mémoire allouée et valeur initiale zéro) une seule fois, même le contrôle du programme exécute à nouveau linstruction de déclaration. La valeur et la durée de vie de la variable statique sont conservées jusquà la fin du programme, mais elles peuvent être utilisées à lintérieur de la portée.

void staticTest(){

static int i;

printf("\%d\n",i);

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Résultat:

0

1

2

Dans lexemple ci-dessus, lutilisation dune variable statique locale est démontrée.

statique globale: vous pouvez déclarer une variable statique dans une portée globale et elle sera presque identique à une autre variable globale sauf quelle a une valeur initiale égale à zéro, si vous ne lui attribuez aucune valeur.

Réponse

Statique locale:

  • La valeur par défaut est zéro
  • Stocké dans la section des données (bss ou initialisé) de la mémoire
  • La portée ou la visibilité se trouve dans le bloc ou une fonction
  • La vie de la variable statique locale commence et se termine uniquement avec le programme.

Global static:

  • Si une variable globale est statique, la portée ou la visibilité se trouve uniquement dans ce fichier, même lutilisation dextern dans un autre fichier ne fonctionnera pas . Cela donne une erreur de liaison.

Exemple 1:

static int a=20;

void xyz()

{

printf("\%d, ", a);

a = 100;

}

int main()

{

printf("\%d, ", a);

{

static int a = 10;

printf("\%d, \n", a);

xyz();

}

printf("\%d", a);

}

// Output is 20, 10, 20, 100

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *