/* IFT1166 - démonstration #6 - exercice 5 14-octobre -2005 v1.01 M.Lokbani MàJ pour A05 à partir de examen Intra E2000 Q4 +gcc3.4.2, +comments 30-mai -2000 v1.00 M.Lokbani Examen Intra E2000, Question 4. contact: lokbani@iro.umontreal.ca Cette démonstration a pour but de vous donnez quelques astuces de programmation. Copyright (C) 2000-2005 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- */ // -------------------------------------------------------------------- #include using namespace std; int uneFonction(int a, int & b,int *c){ a += 1; b += 3; *c += 4; return a+b+(*c); } int main() { int a = 3, b = 4,c=5; cout << "sortie:" << uneFonction(a,b,&c) << endl; cout << "a= " << a << " b= " << b << " c= " << c << endl; a = 3, b = 4, c=5; cout << "sortie:" << uneFonction(b,c,&a) << endl; cout << "a= " << a << " b= " << b << " c= " << c << endl; a = 3, b = 4,c=5; cout << "sortie:" << uneFonction(a,a,&a) << endl; cout << "a= " << a << " b= " << b << " c= " << c << endl; return 0; } // -------------------------------------------------------------------- /* opérations int a=3; a déclarée dans le main a vaut 3 int b=4; b déclarée dans le main b vaut 4 int c=5; c déclarée dans le main c vaut 5 uneFonction(a,b,&c) appel à uneFonction(int a, int & b,int *c) a est passée par valeur, b par référence c par pointeur. a (dans UneFonction) = a (passée par valeur) = 3 b (dans UneFonction) = b (passée par référence) = 4 c (dans UneFonction) = c (passée par pointeur) = 5 a = 3+1= 4 (a = 3) b = 3+4= 7 (b = 7) *c = 4+5= 9 (c = 9) a+b+(*c) = 4+7+9=20 on retourne 20. sortie: 20 cout << "a= " << a << " b= " << b << " c= " << c << endl; affichage: a=3, b=7, c=9 int a=3; a déclarée dans le main a vaut 3 int b=4; b déclarée dans le main b vaut 4 int c=5; c déclarée dans le main c vaut 5 uneFonction(b,c,&a) appel à uneFonction(int a, int & b,int *c) b est passée par valeur, c par référence a par pointeur. a (dans UneFonction) = b (passée par valeur) = 4 b (dans UneFonction) = c (passée par référence) = 5 c (dans UneFonction) = a (passée par pointeur) = 3 a = 4+1= 5 (b = 4) b = 5+3= 8 (c = 8) *a = 3+4= 7 (a = 7) a+b+(*c) = 5+8+7=20 on retourne 20. sortie: 20 cout << "a= " << a << " b= " << b << " c= " << c << endl; affichage: a=7, b=4, c=8 int a=3; a déclarée dans le main a vaut 3 int b=4; b déclarée dans le main b vaut 4 int c=5; c déclarée dans le main c vaut 5 uneFonction(a,a,&a) appel à uneFonction(int a, int & b,int *c) a est passée par valeur, a par référence a par pointeur. a (dans UneFonction) = a (passée par valeur) = 3 b (dans UneFonction) = a (passée par référence) = 3 c (dans UneFonction) = a (passée par pointeur) = 3 a = 3+1= 4 (a = 3) b = 3+3= 6 (a = 6) *a = 6+4= 10 (a = 10) a+b+(*c) = 4+10+10=24 b étant une référence sur a, de ce fait b vaut réellement la dernière valeur prise par a dans ce cas 10. Pour cela qu'on additionne avec 10 et non pas 6. on retourne 24. sortie: 24 cout << "a= " << a << " b= " << b << " c= " << c << endl; affichage: a=10, b=4, c=5 */