Académique Documents
Professionnel Documents
Culture Documents
Abdelhak BOULAALAM
https://sites.google.com/a/usmba.ac.ma/boulaalam/
abdelhak.boulaalam@usmba.ac.ma
Pointeurs? Pointeurs?
Les objets résident en mémoire. Les pointeurs sont des variables/objets, comme
l’ accès et la manipulation des objets via des n'importe quel autre type d'objet.
variables. Leur valeur est l'adresse d'un objet, un emplacement
Une autre façon d'accéder à un objet en mémoire mémoire où l'objet est stocké.
consiste à utiliser des pointeurs. Pour accéder à une valeur stockée dans un objet
Un objet en mémoire est caractérisé par 2 choses: pointé par un pointeur, nous devons déréférencer un
son type et une adresse. pointeur.
Cela nous permet d'accéder à l'objet via un pointeur. Le déréférencement se fait en ajoutant un nom de
1
2/13/2023
References? References?
Un autre concept (un peu) similaire est un type de Exemple: Tapez le code suivant:
référence.
#include <iostream>
Un type de référence est un alias vers un objet existant en
mémoire. using namespace std;
Les références doivent être initialisées. int main()
Nous décrivons un type de référence comme type_name {
cout << "CM manipulation references !" << endl;
suivi d'une &. int x = 123;
Exemple: Nous avons maintenant deux noms différents qui int& y; Q1: Commenter le code
return 0;
int main() font référence au même objet int en mémoire.
} Q2: Compiler! Explications
{ Si nous attribuons une valeur différente à l'un
int x = 123; d'eux, ils changent tous les deux car nous avons
int& y = x; un objet en mémoire, mais nous utilisons deux ...CMreferencesExemples\main.cpp|9|error: 'y' declared as
} noms différents reference but not initialized|
A. BOULAALAM (USMBA/ENSA) POO CPP 5 A. BOULAALAM (USMBA/ENSA) POO CPP 6
References? References?
Exemple: Tapez le code suivant: Exemple: Tapez le code suivant:
#include <iostream>
int main()
{
cout << "CM manipulation references !" << endl; Q3: Corriger l’erreur
int x = 123; Q4: Compiler! Explications
int& y = x; // initialisation obligatoire
return 0; Q5: Afficher x et y
} Q6: Changer la valeur de x
Q7: Exécuter! Explications
Q8: changer la valeur de y Q10: Exécuter! Explications
Q9: Exécuter! Explications
A. BOULAALAM (USMBA/ENSA) POO CPP 7 A. BOULAALAM (USMBA/ENSA) POO CPP 8
2
2/13/2023
3
2/13/2023
4
2/13/2023
5
2/13/2023
Transmission des arguments – par adresse Transmission des arguments – par référence
#include <iostream>
void echange(int*,int*); // Modification de la signature
// Utilisation de pointeurs
int main()
{ int n=10, p=20;
cout << "avant appel: " << n << " " << p << endl;
echange(&n,&p);
cout << "apres appel: " << n << " " << p << endl;
}
void echange(int* a, int* b)
{ int c;
cout << "debut echange : " << *a << " " << *b << endl;
c=*a; *a=*b; *b=c;
cout << "fin echange : " << *a << " " << *b << endl;
}
Lors de l’appel echange(&n,&p): a pointe sur n et b pointe sur p Lors de l’appel echange(n,p): a et n correspondent au même emplacement
Donc après l’appel (à la sortie de la fonction), les valeurs de n et p ont été mémoire, de même pour b et p
modifiées Donc après l’appel (à la sortie de la fonction), les valeurs de n et p sont modifiées
6
2/13/2023
STL
STL: Librairie STL (Standard Template Library) : incluse dans la
norme C++ ISO/IEC 14882 et développée à Hewlett Packard
(Alexander Stepanov et Meng Lee) - définition de conteneurs (liste,
vecteur, file etc.)
7
2/13/2023