Initialisation variable...

Signaler
Messages postés
17
Date d'inscription
jeudi 26 janvier 2006
Statut
Membre
Dernière intervention
23 juin 2006
-
Messages postés
30
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
10 février 2010
-
Bonjour , j'ai un probleme d'initialisation de variable, en effet j'utilise deux fois la meme fonction dans mon main pour deux cas different, mais mon probleme est qu'a chaque fois qu'il rentre dans ma fonction il reinitialise ma variable ce que je ne desire pas!

Je rentre dans ma fonction j'initialise time_alarm a 0 si il y a une alarm time_alarm est egal a real_time et ainsi je ne souhaite plus initialiser time_alarm dans ma boucle while. Je crois qu'il y a une solution pour initialiser une seule fois une variable mais je ne trouve pas.

Merci beaucoup pour votre aide

 Mateo

8 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Oui c'est possible en déclarant ta variable en statique:
sattic int time_alarm = 0;

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Ce n'est pas trais claire tous cela, mais si tu appel 2 fois la fonction dans le main et que tu n'utilise pas de pointeur c'est normale que ta variable se réinitialise a chaque fois. Car si tu la passe en paramètre sache que la varaible dans ton fonction est une copie de celle passée en paramètre et que si tu la modifie a l'intérieure de ta fonction en aucun cas , la valeur de ta variable déclarée hors de ta fonction ne sera modifiée, pour cela il faut utiliser les pointeurs. Et donc passer en paramètre l'adresse de la variable et non la valeur de celle-ci.

Et si la variable qui se réinitialise tous le temps est déclarée dans la fonction, sache que la variable est crée est chaque appel a la fonction et détruite a la fin de celle-ci.

++
Messages postés
17
Date d'inscription
jeudi 26 janvier 2006
Statut
Membre
Dernière intervention
23 juin 2006

Merci beaucoup pour votre aide je vais essayer la soluce de vecchio par flemme mais je suis sur que ta methode deck est plus propre. En tout cas merci beaucoup pour vos reponse rapide!
Messages postés
92
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
16 janvier 2007

passer en reference plutot qu'en pointeur c'est sympa aussi....
Jah bless mycode
Messages postés
196
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
1 mai 2009
2
Autre soluce, tu crées une variable booléenne que tu mets à la valeur 'true' dès que ta variable Y est initialisée. Ainsi, tu interdits cette initialisation de Y si ta booléenne est à true. C'est assez rustique comme système, mais tu est sûr que ça fonctionne.
A+
LaPatoshe
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pourquoi ils veulent pas ma variable statique? Ca sert a ca je crois

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
75
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2006

#include <stdio.h>

void func( void )
{
    static int i = 0;
    i++;
    printf("%d\n", i);
}
int main()
{
    func();
    func();
    func();

    return 0;
}

affiche dans la console:

1
2
3
Press any key to continue...

//------------------------------------------------------------------------
//------------------------------------------------------------------------
//------------------------------------------------------------------------
#include <stdio.h>

void func( int* i )
{
    (*i)++;
    printf("%d\n", (*i));
}
int main()
{
    int i = 0;

    func(&i);
    func(&i);
    func(&i);

    return 0;
}

affiche dans la console:


1

2

3

Press any key to continue...

//------------------------------------------------------------------------

//------------------------------------------------------------------------

//------------------------------------------------------------------------

etc.

-=-= ExCRT =-=-
Messages postés
30
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
10 février 2010

Une variable de type statique est normalement allouée en dur dans le segment data d'un programme et donc associée à une valeur nule

Attention : si vous utilisez une variable statique dans une fonction/procédure ou comme invariant de boucle il ne faut pas oublier de la réinitialiser avant utilisation vu que l'on peut l'assimiler à une "variable globale"....