Initialisation variable...

mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006 - 23 juin 2006 à 09:02
CG85 Messages postés 30 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 10 février 2010 - 26 juil. 2006 à 19:55
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juin 2006 à 09:45
Oui c'est possible en déclarant ta variable en statique:
sattic int time_alarm = 0;

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
23 juin 2006 à 09:45
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.

++
0
mriviere Messages postés 17 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 23 juin 2006
23 juin 2006 à 10:05
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!
0
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
23 juin 2006 à 13:54
passer en reference plutot qu'en pointeur c'est sympa aussi....
Jah bless mycode
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lord_Patoche Messages postés 196 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 1 mai 2009 3
23 juin 2006 à 14:23
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 juin 2006 à 14:43
Pourquoi ils veulent pas ma variable statique? Ca sert a ca je crois

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
excrt Messages postés 75 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 3 juillet 2006
24 juin 2006 à 17:33
#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 =-=-
0
CG85 Messages postés 30 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 10 février 2010
26 juil. 2006 à 19:55
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"....
0
Rejoignez-nous