Passage par reference

Signaler
Messages postés
39
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
13 novembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
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

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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.

++
Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 février 2007
1
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...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
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
Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 février 2007
1
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....!!!!
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
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 );
Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 février 2007
1
oui mais est il question du c++ la..???
j'ai pas l'impression...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
le passage par reference ca existe pas en C donc oui il est forcement question de c++