Probleme de pointeur

Résolu/Fermé
NIGEL - 8 janv. 2009 à 11:50
progfann Messages postés 365 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 23 septembre 2010 - 9 janv. 2009 à 16:13
Bonjour,

j'ai compris en gros comment fonctionne un pointeur et a quoi il sert MAIS je n'arrive pas a integrer l'idée
du fonctionnement "scanf"
en effet par exemple;

scanf("%d", &n);

la valeur que l'on va entrer deviendra si j'ai compris l'adresse de n

OR je ne vois pas comment a partir de ça on peut modifié n grace a la fonction scanf

si quelqu'un a la patience et le courage de m'expliquer je lui saurai trés reconnaissant.

merci

3 réponses

Utilisateur anonyme
8 janv. 2009 à 11:53
si je me souvien bien, ca modifi n (n écrit en char* n) et pour utiliser ensuite, tu utilise sont adresse, il me semble
0
JE PENSAI EN FAIT PLUTOT a int n = 20 par ex.mais je ne crois pas que ca change réellement quelque chose..

QUELQU'UN POURRAI T'IL ME FOURNIR LES METHODES DE SCANF SVP je pense que ca pourrai m'aider a y voir plus clair...
0
NIGEL > NIGEL
8 janv. 2009 à 12:20
la je cale ,
ca me rend fou!!!

HELP!!!!!!
0
progfann Messages postés 365 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 23 septembre 2010 23 > NIGEL
8 janv. 2009 à 12:25
En fait scanf prend en parametre un pointeur (qq chose de ce genre : scanf(void*) ), donc on dois lui entrer une adresse, bien, alors lorsqu'on declare une variabe, bien entendu cette variable aura une adresse dans la memoire avec une valeur aleatoire, comme vous savez le C donne une valeur aleatoire à ces variables non initialisé, donc pour changer cette valeur disant aleatoire en doit passer par un poiteur qui va nous changer cette valeur au biais de l'adresse, et voila l'expression: scanf("%d",&var);

bonne chance.
0
NIGEL > progfann Messages postés 365 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 23 septembre 2010
8 janv. 2009 à 12:57
merci
si j'ai bien compris( en refaisant un tour dans mes bouquin)

il est impossible de modifié une adresse de cette façon ?; &nombre= 15

j'ai essayé avec mon compilateur ca ne marche pas.
0
NIGEL > NIGEL
8 janv. 2009 à 13:02
en n'oubliant pas les ; bien sur
0
Utilisateur anonyme
8 janv. 2009 à 14:07
mdr, gg ton monologue ;)
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
8 janv. 2009 à 14:22
Salut.
scanf est une fonction C. En C, il n'y a pas de passage par référence, mais des passage par valeur.
Donc, si tu veux modifier une variable, il faut passer un pointeur.
En gros, le proto de scanf :

int scanf(const char*s,void* v)
Si dans 's' scanf voi un d, il sais que v est un entier, il fait donc :
int*i;
i=v.
Ensuite il peux modifier la valeur en fesaant *i=... (ce qui a été lu)
Si sont prototype avait été int scanf(const cahr*, int v)
Le passage par copie veux dire qu'au sein de scanf une nouvelle variable est créé prenant comme valeur la valeur donné en paramètre lors de l'appel. Cette variable v étant locale à la fonction, celle passer en argument ne sera pas modifier.
0