Urgent : passage par reférence
Fermé
bkgi
Messages postés
1
Date d'inscription
jeudi 15 novembre 2012
Statut
Membre
Dernière intervention
15 novembre 2012
-
15 nov. 2012 à 21:35
Utilisateur anonyme - 24 nov. 2012 à 23:06
Utilisateur anonyme - 24 nov. 2012 à 23:06
2 réponses
kikos897
Messages postés
58
Date d'inscription
vendredi 2 décembre 2011
Statut
Membre
Dernière intervention
20 novembre 2014
16 nov. 2012 à 00:47
16 nov. 2012 à 00:47
en fait en c++ dans une fonction si tu lui passe des paramètres, la fonction va copié ce paramettre dans une variable qui serra vivante uniquement à l'intérieur de la fonction et serra détruite à la fin de la fonction , du coup si tu dois traiter ton paramettre il ne serra jamais modifier , sauf si tu le passe par référence.
Un exemple pour plus d'ilustration
// j'ai une fonction qui incrémente la variable int a et qui en retourne rien
void maFonction( int a)
{
a= a+1;
}
// Dans mon main
int main ()
{
int x=0; // je déclare une variable a et je l'initialise à 0
maFonction(x); // appel de ma fonction
cout<<"Valeur de x: "<<x; // ici la valeur affiché sera 0 , x n'a pas été modifié
}
Maintenant si je fais cette fonction au lieu de l'autre:
void maFonction( int &a)
{
a= a+1;
}
// Dans mon main
int main ()
{
int x=0; // je déclare une variable a et je l'initialise à 0
maFonction(x); // appel de ma fonction
cout<<"Valeur de x: "<<x; // ici la valeur affiché sera 1 , x a été modifié
}
dans le deuxième cas x va être modifié car il est passé par référence dans la fonction, ce qui fait que la fonction ne va pas crée de copie mais il va directement modifier la variable passée en paramètre
PS: le passage par référence passe l'adresse de la variable c'est pour ça que la fonction peut la modifier car elle sait où cette variable se situe dans la mémoire du système.
Si il y a un point pas clair n'hésite pas à le dire.
Un exemple pour plus d'ilustration
// j'ai une fonction qui incrémente la variable int a et qui en retourne rien
void maFonction( int a)
{
a= a+1;
}
// Dans mon main
int main ()
{
int x=0; // je déclare une variable a et je l'initialise à 0
maFonction(x); // appel de ma fonction
cout<<"Valeur de x: "<<x; // ici la valeur affiché sera 0 , x n'a pas été modifié
}
Maintenant si je fais cette fonction au lieu de l'autre:
void maFonction( int &a)
{
a= a+1;
}
// Dans mon main
int main ()
{
int x=0; // je déclare une variable a et je l'initialise à 0
maFonction(x); // appel de ma fonction
cout<<"Valeur de x: "<<x; // ici la valeur affiché sera 1 , x a été modifié
}
dans le deuxième cas x va être modifié car il est passé par référence dans la fonction, ce qui fait que la fonction ne va pas crée de copie mais il va directement modifier la variable passée en paramètre
PS: le passage par référence passe l'adresse de la variable c'est pour ça que la fonction peut la modifier car elle sait où cette variable se situe dans la mémoire du système.
Si il y a un point pas clair n'hésite pas à le dire.
Utilisateur anonyme
24 nov. 2012 à 23:06
24 nov. 2012 à 23:06
https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c
Tout est expliqué.
Tout est expliqué.