Exercice : Introdution#
Cet exercice rapide est destiné à vous faire manipuler les pointeurs dans des cas simples afin de comprendre le lien avec les références mais aussi les différences.
- Écrivez une fonction - void minimum(int a, int b, int *r)qui renvoie via le pointeur- rla plus petite des deux valeurs- aet- b. N’oubliez pas de bien tester votre fonction.- BEGIN SOLUTION - void minimum(int a, int b, int *r) { if (a < b) { *r = a; } else { *r = b; } } - Attention, la version suivante ne fonctionne pas : - void minimum(int a, int b, int *r) { if (a < b) { r = &a; } else { r = &b; } } - En effet, dans l’enregistrement d’activation de la fonction on trouve une case pour chacun des paramètres, dans ce code la case associée à - rva recevoir l’adresse d’une des deux autres cases. La variable originellement pointée par- rau moment de l’appel ne sera pas modifiée.- int main() { int a = 10; int b = 5; int c; int *p = &c; minimum(a, b, p); cout << "minimum:" << *p << endl; return 0; } - END SOLUTION 
- Écrivez une fonction - int *maximum(int *a, int *b)qui prend en paramètre deux pointeurs vers des entiers et renvoie le pointeur vers l’entier le plus grand. Testez votre fonction en écrivant une fonction main qui lit deux entiers dans des variables et utilise la fonction maximum pour trouver la plus grande des deux et la doubler.- BEGIN SOLUTION - int *maximum(int *a, int *b) { if (*a > *b) { return a; } else { return b; } } int main() { int a, b; cin >> a >> b; int *p = maximum(&a, &b); *p = 2 * *p; cout << "a=" << a << endl; cout << "b=" << b << endl; return 0; } - END SOLUTION