Passage par reference
Résolu
matafix
Messages postés
45
Date d'inscription
Statut
Membre
Dernière intervention
-
matafix Messages postés 45 Date d'inscription Statut Membre Dernière intervention -
matafix Messages postés 45 Date d'inscription Statut Membre Dernière intervention -
Bonjour,(langage C)
svp expliquez moi c'est quoi un passage par référence, a quoi il sert et comment on le declare dans une fonction???
svp expliquez moi c'est quoi un passage par référence, a quoi il sert et comment on le declare dans une fonction???
A voir également:
- Passage par reference
- Passage qwerty azerty - Guide
- Reference pto - Accueil - Box & Connexion Internet
- Test passage windows 11 - Guide
- Passage à windows 11 gratuit - Guide
- Passage windows 7 à 10 - Accueil - Mise à jour
2 réponses
Salut Matafix,
si mes souvenirs sont bons, et ils doivent l'être :-)) , un passage par référence, contrairement à un passage par valeur, c'est quand tu utilises un pointeur vers une variable plutôt que la variable elle-même.
Je te fais un petit exemple, une multiplication à trois paramètres.
function multipli(int a, int b, int *c) { a et b par valeur, c par reference
(*c) = a * b;
}
Fonction que tu appelleras ainsi : multipli(val1,val2,&resultat) valeurs de val1 et val2, adresse de resultat
L'usage c'est pour avoir des paramètres en retour de fonction.
Une fonction ne renvoye qu'un résultat, si tu en veux plusieurs, passe ces paramètres par référence.
Bon courage, Greg.
si mes souvenirs sont bons, et ils doivent l'être :-)) , un passage par référence, contrairement à un passage par valeur, c'est quand tu utilises un pointeur vers une variable plutôt que la variable elle-même.
Je te fais un petit exemple, une multiplication à trois paramètres.
function multipli(int a, int b, int *c) { a et b par valeur, c par reference
(*c) = a * b;
}
Fonction que tu appelleras ainsi : multipli(val1,val2,&resultat) valeurs de val1 et val2, adresse de resultat
L'usage c'est pour avoir des paramètres en retour de fonction.
Une fonction ne renvoye qu'un résultat, si tu en veux plusieurs, passe ces paramètres par référence.
Bon courage, Greg.
j'ai creer une fonction en utilisant un passage par reference mais le compilateur m'envoie les erreurs suivantes:
47 E:\ABDELLAH\struct\tabstuck.cpp cannot convert `pile' to `pile*' for argument `1' to `void empile(pile*, typeEl)'
56 E:\ABDELLAH\struct\tabstuck.cpp cannot convert `pile' to `pile*' for argument `1' to `void depile(pile*)'
peut tu m'aider stp, voila la fonction
int test(pile &p,char ch[20])
{int i,res;
for(i=0;ch[i]!='/0';i++)
{if(((ch[i]=='(')||(ch[i]=='['))&&(!estPleine(p)))
empile(p,ch[i]);
else
if((ch[i]==')')&&(!estVide(p)))
if(p.t[p.sm]==')')
depile(p);
else
res=false;
if((ch[i]==']')&&(!estVide(p)))
if(p.t[p.sm]=='}')
depile(p);
else
res=false;
}
return res;
}
int test(pile &p,char ch[20])
déjà tu ne peux pas mettre une adresse & mais un pointeur *
int test(pile *p, char ch[20])
ensuite il te mettra aussi un message pour ta chaine de caractère, on ne peut contraindre sa taille à 20 !!!
int test(pile *p, char ch[])
De même, dépile qui fonctionne aussi avec pointeur, tu ne dois pas mettre depile(p) mais depile(&p), en fait je suppose car je n'ai pas les sources.
A++