Académique Documents
Professionnel Documents
Culture Documents
Les Pointeurs
• Il peut être vu comme un « localisateur » : par
son contenu, le pointeur désigne (pointe sur)
l’emplacement physique d’une autre valeur
1
prévenir une unique personne du changement : « La Poste ».
Question 25/02/2021
Comment gardez-vous un site intéressant sur Internet ?
Réponse
Via un « bookmark/signet » dans votre navigateur : c’est un lien vers l’information qui
vous intéresse.
Question
Et comment fait-on cela en programmation ?
Réponse
Pour faire la même chose et garder un lien vers une entité (une variable, fonction, etc.),
c.-à-d. en avoir une référence universelle, on utilise des pointeurs.
Pointeur
2-Représentation graphique
Élément informatique qui contient l’adresse d’un autre élément informatique. Il peut
être vu comme un « localisateur » : par son contenu le pointeur désigne (pointe sur) l’em- 3-Type du pointeur
placement physique d’une autre valeur (pointeur de donnée) ou d’une fonction (pointeur
de code). La valeur d’un pointeur est une adresse virtuelle.
• Si x désigne une variable, l’expression @x, qui • Un pointeur est typé : il est lié au type de
fournit graphique
Représentation l’adresse de x, est un pointeur ; l’en6té vers laquelle il pointe.
Si x désigne une variable, l’expression @x, qui fournit l’adresse de x, est un pointeur ; ici
@x pointe vers x. Si f ici @xune
désigne pointe vers
procédure x.
ou fonction, l’expression @f pointe vers le • Le type de la variable pointée est appelé le
début du code de la procédure ou fonction f.
type du pointeur ou type de base.
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
2
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
3
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
4
25/02/2021
• Opérateur d’indirection
p^ // avec p pointeur
• Ainsi l’instruc;on suivante produira un
comportement imprévisible si p vaut Nil
• Explication x <- p^ ????????
Renvoie la valeur pointée par le pointeur p, p^ est
une variable du type de la zone pointée.
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
5
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
6
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
7
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
8
25/02/2021
9
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
10
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
11
25/02/2021
desallouer(ptr)
! libère la place de la zone mémoire dont l'adresse est dans ptr (et la rend disponible
pour l'allocation d'autres variables)
! laisse la valeur du pointeur en l'état (n'efface pas l'adresse qui est dans la variable
pointeur).
ptr ptr^ : t
desallouer(ptr)
ptr
12
Remarque : si on fait appel au pointeur désalloué, il renvoie une information qui n'a aucun
25/02/2021
13
25/02/2021
DVD-MIAGE Pointeurs Algorithmique
Allocation / désallocation d'une zone de mémoire
On a défini un type t.
On déclare : ptr : pointeur_sur_t ou ^t.
allouer(ptr)
ptr : ^t
14
25/02/2021
p←tab ⟺ p←@tab[1]
car tab prends l’adresse du premier élément du
tableau
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
15
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
16
25/02/2021
Cours ASD2 – ISET Charguia 2020/2021 Cours ASD2 – ISET Charguia 2020/2021
17
25/02/2021
Exemple
Type Pays = Enregistrement
nom : chaine de caractères
nb_hab : En;er
FinEnregistrement
Algorithme Pointeur_Enregistrement
Variables
ppays : ^Pays
Début
Allouer(ppays)
Ecrire("Saisissez le nom du pays et sa popula;on")
Lire(ppays^.nom)
Lire(ppays^.nb_hab)
Ecrire("Vous avez saisi que le ", ppays^.nom," a " ,ppays^.nb_hab,"habitant(s)")
Libérer (ppays)
Fin
Cours ASD2 – ISET Charguia 2020/2021
18