Probleme de pointeur

Résolu
NIGEL -  
progfann Messages postés 365 Date d'inscription   Statut Membre Dernière intervention   -
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
 
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
NIGEL
 
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
 
la je cale ,
ca me rend fou!!!

HELP!!!!!!
0
progfann Messages postés 365 Date d'inscription   Statut Membre Dernière intervention   23 > NIGEL
 
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   Statut Membre Dernière intervention  
 
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
 
en n'oubliant pas les ; bien sur
0
Utilisateur anonyme
 
mdr, gg ton monologue ;)
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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