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
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
- Nombre de combinaison possible avec 3 chiffres ✓ - Forum Programmation
- Supprimer les 0 devant un nombre excel ✓ - Forum Excel
- Le nombre de tentatives de déverrouillage incorrectes est trop élevé samsung ✓ - Forum Samsung
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 192
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 192
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