Nombre etrange avec les variables en C
Résolu/Fermé
A voir également:
- Nombre etrange avec les variables en C
- Nombre facile - Télécharger - Outils professionnels
- Nombre de jours entre deux dates excel - Guide
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
- Ascii nombre de caractères - Guide
4 réponses
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
27 oct. 2009 à 17:12
27 oct. 2009 à 17:12
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 !
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 !
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
27 oct. 2009 à 17:26
27 oct. 2009 à 17:26
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
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