Passage par reference

jfk20004 Messages postés 39 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 13 novembre 2004 - 26 août 2004 à 13:05
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 26 août 2004 à 14:31
je ne comprends pas le principe qui consiste à pouvoir modifier une variable par un passage par reference.
Une variable n'est elle pas comme son nom le laisse sous entendre
destinée à etre modifiée.
Si je declare une variable et que ma fonction veut la modifier est
ce que alors ma fonction utilise un appel par reference.Si c'est ça.
OK.MERCI BONNE PROG

7 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 août 2004 à 13:22
Passage par ref :

main (){
int ok = 5;
appel(&ok);
printf("%d", ok);
}

appel(int *ok) {
*ok = 6;
}

lors du printf ok, apparaitra 6 a l'ecran.
Kan tu parle de passage par reference en C, tu atteris OBLIGATOIREMENT sur les pointeurs. Le sujet avait été traité ya pas si longtemps ke ca sur le forum.

++
0
DevGizmo Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 février 2007 1
26 août 2004 à 13:50
Par valeur, la variable est recopier dans la pile, mais ce n'est qu'une copie donc quand on sort de la fonction qui la manipule on perd les modifs

Par reference, on passe l'adresse de la variable donc on a un pointeur sur cette adresse; implique que l'on peut modifier la valeur de la variable a partir de la fonction...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
26 août 2004 à 14:20
AlexMAN > ton exemple c'est du passage par valeur, pas par reference

DevGizmo > on manipule pas un pointeur comme le passage par pointeur en C mais plutot un alias de l'objet, mùais c'est bien l'adresse qui est passée à la fonction
0
DevGizmo Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 février 2007 1
26 août 2004 à 14:25
djil> c'est par rapport a l'example

void toto(int *titi)

si: toto(&val) => tu peux modifier la valeur de val dans la fonction

si void toto(int titi): on passe l'adresse de la copie dans la pile et pas l'adresse de la variable proprement dite....!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
26 août 2004 à 14:28
ok mais ca c'est pas du passage par reference, c'est juste du passage par valeur d'un pointeur comme on fais en c

passage par reference en c++ c'est

void toto(int &titi);

toto( val );
0
DevGizmo Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 février 2007 1
26 août 2004 à 14:30
oui mais est il question du c++ la..???
j'ai pas l'impression...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
26 août 2004 à 14:31
le passage par reference ca existe pas en C donc oui il est forcement question de c++
0
Rejoignez-nous