« Structures de données/Pointeurs » : différence entre les versions

Aller à la navigation Aller à la recherche
 
=== Utilisation ===
 
=== Exemple avec des entiers ===
 
Remarque : encore une fois ce programme n'est d'aucune utilité. On pourrait en faire un équivalent sans utiliser de pointeurs. Le but est d'expliquer les mécanismes décrits précédemment.
 
Algorithme Exemple
Lexique
a : entier
b : entier
p1 : ^entier
p2 : ^entier
Début
a:=1
new(p1) (* on réserve de l'espace pour stocker un entier *)
p1^:=a (* stocke 1 dans la zone mémoire pointée par p1 *)
ecrire(p1^) (* affiche 1 *)
a:=2
ecrire(p1^) (* affiche 1 *)
p2:=p1 (* p2 va pointer la zone mémoire pointée par p1 *)
ecrire(p2^) (* affiche 1 *)
p2^:=3 (* on place 3 dans la zone mémoire pointée par p2 *)
ecrire(p1^) (* affiche 3 *)
delete(p1) (* on libère la zone pointée par p1 et donc la zone pointée par p2 *)
(* a se stade : plus aucune zone mémoire n'est réservée dans la mémoire dynamique *)
new(p1)
new(p2)
p1^:=4
p2^:=p1^+1
ecrire(p2^) (* affiche 5 *)
(* il est d'usage de libérer au maximum la mémoire dynamique : *)
delete(p1)
delete(p2)
Fin
 
== Les effets de bord ==
Utilisateur anonyme

Menu de navigation