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