Nombre etrange avec les variables en C

Résolu
Takamichi -  
 Takamichi -
Bonjour, je suis debutant dans le language C

Voila j'ai un probléme lorsque je rentre une variable de ce genre :
int main()
{
    int age;
    printf("bonjours les amis. \nQuel age avez vous ?      ");
    scanf("%d",age);
    printf("alors comme ca vous avez %d ans ?!",age);

    return 0 ;

}


ou une addtion,soustraction ....etc

et bien lorsque j'ouvre le fichier il me dis que la variable = 24567895132 (enfin un grand nombre)
et losque je modifie la vaiable pour qu'au debut elle sois egale a 0 .....le programme plante je ne vois pas ou est l'erreur .....

merci de votre reponse
A voir également:

4 réponses

Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
scanf("%d",&age);

tu comprendra plus tard dans ton apprentissage qu'il faut passer un pointeur à scanf.. pur cela, tu mets le & devant le nom de la variable


avec ce que tu as fait, tu as écrit la valeur de ton nombre à un endroit aléatoire de la mémoire!

depuis windows 2000 ca va, ca risque pas grand chose (juste un crash de ton application) mais avec windows 98 t'aurai pu avoir un bel écran bleu !
2
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
c'est une vrai erreur de débutant ;)

je vais te donner une petite explication: quand tu passes un parametre, une valeur, à une fonction, tu lui passe une copie de cette valeur (ce qui peut, avec les objets, poser de gros problème si ils sont très gros).
si cette copie est modifiée (donc par ton scanf, c'est ce que tu lui demande), la valeur originale reste intacte !

en mettant un & devant le nom de la variable, tu ne passes pas une valeur, mais un "lien" vers l'adresse memoire contenant cette valeur (ce qu'on appelle un pointeur). De cette manière, la fonction scanf recoit non pas un int, mais un int* ...

donc, d'une manière générale, retiens que si une fonction modifie une valeur, il faut lui passer un pointeur
2
Takamichi
 
ok merci beaucoup pour cette reponse rapide ^^

je passe en resolu
0
Takamichi
 
ok et encore merci , je tacherai de m'en souvenir ...!
0