Vous êtes sur la page 1sur 5

Exercice 1:

Ecrire un programme C++ qui :

1. Déclare un entier a;
2. Déclare une référence vers cet entier ref_a;
3. Déclare un pointeur vers cet entier p_a;
4. Affiche les variables, leurs adresses, la valeur pointée.

Exemple d’exécution :
Donner un entier : 5
Le contenu des variables:
- variable i : 5
- variable ref_i : 5
- variable p_i : 0x24fe98
Leur adresse:
- adresse de i : 0x24fe98
- adresse de ref_i : 0x24fe98
- adresse de p_i : 0x24fe94
//Source : www.exelib.net
La valeur pointee : 5

Solution

//Programme : Références et pointeurs

//Auteur : IDMANSOUR

//Copyright : Exelib.net

#include<iostream>

using namespace std;

int main()

{
int i;
int *p_i; //pointeur

cout<<"Donner un entier : ";

cin>>i;

int &ref_i=i; //Reference

p_i=&i;

cout<<"Le contenu des variables:"<<endl;

cout<<"- variable i : "<<i<<endl;

cout<<"- variable ref_i : "<<ref_i<<endl;

cout<<"- variable p_i : "<<p_i<<endl;

cout<<"Leur adresse: "<<endl;

cout<<"- adresse de i : "<<&i<<endl;


cout<<"- adresse de ref_i : "<<&ref_i<<endl;

cout<<"- adresse de p_i : "<<&p_i<<endl;

cout<<"La valeur pointee : "<<*p_i<<endl;

return 0;

}
Exercice 2
Écrire une fonction nommée incrementer() permettant d’incrémenter la valeur d’une
variable passée en paramètre et une fonction nommée permuter() permettant
d’échanger les contenus de 2 variables de type int fournies en argument :

 en transmettant l’adresse des variables concernées (seule méthode utilisable en C) ;


 en utilisant la transmission par référence.

Dans les deux cas, écrire un programme  (main) qui teste les deux fonctions.

Exemple d’exécution :
Donner la valeur de A : 6
Donner la valeur de B : 29
- Appel par Adresse
la valeur de A apres incrementation : 7
la valeur de A apres permutation : 29
la valeur de B apres permutation : 7
- Appel par Reference
la valeur de A est: 29
la valeur de B est: 7
la valeur de A apres incrementation : 30
la valeur de A apres permutation : 7
la valeur de B apres permutation : 30

Solution :

1. //Programme : Incrémentation et permutation


2. //Auteur : IDMANSOUR
3. //Copyright : Exelib.net
4.  
5. #include<iostream>
6. using namespace std;
7.  
8. //Passage par adresse
9. void permuter(int * x,int * y)
10. {
11. int p;
12. p = *x;
13. *x = *y;
14. *y = p;
15. }
16. void incrementer(int * x)
17. {
18. (*x)++;
19. }
20.  
21. //Passage par référence
22. void incrementer(int & x)
23. {
24. x++;
25. }
26. void permuter(int & x,int & y)
27. {
28. int p;
29. p = x;
30. x = y;
31. y = p;

1. }
int main()
2. {
3. int a, b;
4.  
5. cout<<"Donner la valeur de A : ";
6. cin>>a;
7. cout<<"Donner la valeur de B : ";
8. cin>>b;
9. //Appel par adresse
10. cout<<"- Appel par Adresse"<<endl;
11. incrementer(&a);
12. cout<<"la valeur de A apres incrementation : "<<a<<endl;
13.
14. permuter(&a,&b);
15. cout<<"la valeur de A apres permutation : "<<a<<endl;

1. cout<<"la valeur de B apres permutation : "<<b<<endl<<endl;


//Appel par reference
2. cout<<"- Appel par Reference"<<endl;
3. cout<<"la valeur de A est: "<<a<<endl;
4. cout<<"la valeur de B est: "<<b<<endl;
5.
6. incrementer(a);
7. cout<<"la valeur de A apres incrementation : "<<a<<endl;
8.
9. permuter(a,b);
10. cout<<"la valeur de A apres permutation : "<<a<<endl;
11. cout<<"la valeur de B apres permutation : "<<b<<endl;
12.
13. return 0;

16. }

Vous aimerez peut-être aussi