Académique Documents
Professionnel Documents
Culture Documents
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; }
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;