[Débutant] variable static
bonjour à tous,
je suis entrain d'apprendre le C.
mais je ne comprend pas un truc.
voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <stdio.h>
void function() {
int var = 5;
static int static_var = 5;
printf("\t[in function] var = %d\n", var);
printf("\t[in function] static_var = %d\n", static_var);
var++; //ajouter 1 à var
static_var++; //ajouter 1 à static_var
}
int main(){ //La fonction main, avec son propre contexte.
int i;
static int static_var = 1337; //
for(i=0; i<5; i++){ //Boucle 5 fois
printf("[in main] static_var = %d\n", static_var);
function(); //Appeler la fonction.
}
} |
une variable static ne se modifie pas dans le programme si j'ai bien compris. alors comment expliquez vous qu'à la compilation la variable static_var s'incrémente? 8O
Citation:
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 5
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 6
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 7
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 8
[in main] static_var = 1337
[in function] var = 5
[in function] static_var = 9
je n'arrive pas à comprendre pourquoi la variable var (de la fonction) qui n'est pas statique, elle, ne s'incrémente pas et static_var ( de la fonction) qui est supposé être statique s'incrémente.
Merci de m'aider à comrendre cela.
cordialement,
MacMini