0% ont trouvé ce document utile (0 vote)
18 vues14 pages

Les Pointeurs

Transféré par

harizi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues14 pages

Les Pointeurs

Transféré par

harizi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Les pointeurs

Introduction
• La mémoire centrale est composée d’un très grand nombre
d’octets.
• Chaque octet est repéré par un numéro appelé adresse.
Adresses 08 Bits (Octet)
@0
@1
@2
.
Mémoire
. centrale
@ n-2
@ n-1

• Chaque variable dans la mémoire occupe des octets contigus,


c'est-à- dire des octets qui se suivent.
Introduction (Exemple)
• float x;
• En C++ un float occupe 4 octets qui se suivent.
• L’adresse de la variable est l’adresse de son premier
octet.
• On peut connaître l’adresse d’une variable par
l’opérateur &.
Exemple
float x ;
p = &x; //l’adresse de la variable x : adresse de son premier
octet
La variable p contient une valeur qui est l’adresse de la
Allocation de la mémoire
• Les algorithmes (programmes) consomment
essentiellement deux ressources :
– Le temps d’exécution.
– L’espace mémoire réservé.

• On distingue deux types d'allocation (réservation) de


l’espace mémoire:
– Allocation statique
– Allocation dynamique.
Allocation statique
Allocation statique :
• L'allocation de l'espace mémoire se fait avant
l'exécution du programme, c'est-à-dire après la
compilation.
• Le cas de variables simples et de tableaux.
Exemple:
int x; // 4 octets
Réservation de 124
char S[20]; octets avant de
// 20 octets
démarrer l’exécution
float T[100]; // 4 * 100 octets
Allocation dynamique
• L'allocation de l'espace se fait au fur et à mesure de
l'exécution du programme.
• Pour pouvoir faire ce type d'allocation, l'utilisateur doit
disposer des deux opérations : allocation et libération de
l'espace.
• La majorité des langages de programmation offre cette
possibilité.
• Le système d’exploitation prévoir une partie de la MC à
cet effet appelée le TAS (table allocation system).
• Il faut toujours garder l’adresse de l’espace réservé
dynamiquement dans une variable de type pointeur
Pointeurs
• Définition: un pointeur est un variable qui stocke pour valeur une adresse
mémoire. Mémoire centrale

Exemple:
x= 17
P 1000
P un pointeur contenant l’adresse de x dans la mémoire
P= 1000
X 17 @=1000

• Déclaration: On déclare un pointeur d'un type donné en ajoutant le signe


* ou ^ ou le mot clé pointeur avant le type du pointeur.
Exemple:
P : *entier;
en c ou c++:
int * P;
Pointeurs
• Définition: un pointeur est un variable qui stocke pour valeur
une adresse mémoire.
Exemple:
x= 17
P un pointeur contenant l’adresse de x dans la mémoire
P= 1000 Mémoire centrale

P 1000

X 17 @=1000
Pointeurs
Déclaration:
• On déclare un pointeur d'un type donné en ajoutant le
signe * ou ^ ou le mot clé pointeur avant le type du
pointeur: <Nom de la variable> : * Type;
Exemple:
P : *entier;
Q: * réel;

• En c ou c++: Type * <Nom de la variable> ;


int * P;
float * Q;
Opérateurs &
• L'opérateur & sert à récupérer l'adresse mémoire
d'une variable.
int var = 4;
int *ptr;
ptr = &var;
cout<<"L'adresse de 'var' est :", ptr);
Opérateurs *
• Un pointeur contient une adresse en mémoire, et
grâce à l'opérateur *, on peut accéder à la valeur
contenue à cette adresse (soit pour la modifier, soit
pour l'examiner) :

Exemple:
int var = 5;
int *p;
p = &var;
cout<<"La valeur de 'var' est : "<<*p
Allocation dynamique
• L’instruction P Allouer (type): Allocation d’un espace
de taille spécifiée par le type de P. L’adresse de cet
espace est rendue dans la variable de type Pointeur P.
Exemple: allocation d’une zone mémoire pour un entier
P: * entier
P  Allouer (entier)

• En c++: on utilise l’opérateur new (p = new type; )


Exemple: allocation d’une zone mémoire pour un entier
int *p;
p= new int;
Libération d’un espace mémoire
Libération d’un espace mémoire
L’instruction Libérer (p): libération de l’espace pointé par
P.
Exemple:
P: * réel
P  Allouer (réel)
*P  15.5
Ecrire (*P)
Libérer (P);

En c++: on utilise l’opérateur delete (delete p;)


Pointeurs pour des enredistrement
Enregistrement pointé par un pointeur P
Pour accéder à un champ d’un enregistrement pinté par un pointeur
on utilise l’opérateur « -> » : P -> « champ »
Exemple:
Algorithme exemple
Type structure point
x: réel;
y: réel;
Fin
P: * point;
Début
P  Allouer (point); // allocation de l’espace mémoire
P
P -> x  10.8;
@
P -> y  12.5;
Ecrire (p -> x); // affiche 10.8 x y
Libérer(p); //libération de l’espace mémoire 10.5 12.5
Fin

Vous aimerez peut-être aussi