Vous êtes sur la page 1sur 3

Université Hassiba Benbouali de Chlef.

2020/2021
Faculté des sciences. 2 Année LMD- Informatique.
Département d’informatique. Algorithmique et structure de données

Travaux pratiques N° 3
Les pointeurs
Déclaration : Lorsque l'on déclare une variable, l'ordinateur nous « prête » une place dans
sa mémoire et y accroche une étiquette portant le nom de la variable.

int main()
{
int ageUtilisateur(16);
return 0;
}

On peut donc représenter la mémoire utilisée dans ce programme comme sur le schéma
suivant.

La mémoire d'un ordinateur est réellement constituée de millier de « cases », Il faut donc un
système pour que l'ordinateur puisse retrouver les cases dont il a besoin. Chacune d'entre elles
possède un numéro unique, son adresse (figure suivante).
Notre programme utilise une seule de ces cases, la 53768, pour y stocker sa variable. On ne
peut pas mettre deux variables dans la même case.
On peut atteindre la case jaune du schéma par deux chemins différents :
 On peut passer par son nom (l'étiquette).
 Mais on peut aussi accéder à la variable grâce à son adresse (son numéro de case). On
pourrait alors dire à l'ordinateur « Affiche moi le contenu de l'adresse 53768 » ou encore
« Additionne les contenus des adresses 1267 et 91238 ».

Affichage de l’adresse :
En C++, le symbole pour obtenir l'adresse d'une variable est l'esperluette (&). Si on veut
afficher l'adresse de la variable ageUtilisateur, on doit donc écrire &ageUtilisateur
#include <iostream>
using namespace std;
int main() {
int ageUtilisateur(16);
cout << "L'adresse est : " << &ageUtilisateur << endl;
return 0;}

Notations :
Le C introduit deux opérateurs sur les pointeurs : l’opérateur & qui désigne l’adresse d’une
variable ; l’opérateur * qui donne la valeur de l’objet pointé.
- Pour déclarer un pointeur il faut un type et un nom. int *pointeur;

struct nomStructure {
type1 champ1;
...
typeN champN;
};
1) Stocker une adresse
int main() {

2
int ageUtilisateur(16); //Une variable de type int
int *ptr(0); //Un pointeur pouvant contenir l'adresse d'un nombre entier
ptr = &ageUtilisateur; //On met l'adresse de 'ageUtilisateur' dans le pointeur 'ptr'
return 0; }

2) Accéder à la valeur pointée

int main() {
int ageUtilisateur(16);
int *ptr(0);
ptr= &ageUtilisateur; //Aller dans la case mémoire nommée ptr
cout << "La valeur est : " << *ptr << endl; //Lire la valeur enregistrée
cout << *ptr, //Lire la valeur stockée dans la case et l’afficher ;
return 0;

3) La gestion automatique de la mémoire


#include
using namespace std;
int main() {
int* pointeur(0);
pointeur = new int; //new demande une case à l'ordinateur et renvoie un pointeur
pointant vers cette case.
cout << "Quel est votre age ? ";
cin >> *pointeur; //On écrit dans la case mémoire pointée par le pointeur 'pointeur'
cout << "Vous avez "<< *pointeur << " ans." << endl; //On utilise à nouveau *pointeur
delete pointeur; // libérer la mémoire pointeur = 0; //On indique que le pointeur ne
pointe plus vers rien
return 0; }