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

Aller à la navigation Aller à la recherche
→‎Spécification des pointeurs génériques : pointeurs génériques, spécification, utilisation, les effets de bords
(→‎Les pointeurs : intro, spécification, utilisation, exemple avec des entier)
(→‎Spécification des pointeurs génériques : pointeurs génériques, spécification, utilisation, les effets de bords)
Fin
 
== Spécification desLes pointeurs génériques ==
 
Un pointeur générique est un type de pointeur particulier puisqu'il ne donne pas d'information sur ce qu'il pointe. C'est simplement une adresse vers une zone mémoire.
 
=== Spécification des pointeurs génériques ===
 
Il suffit de déclarer un pointeur comme suit
 
Lexique
identifiant_du_pointeur : pointeur
 
=== Utilisation des pointeurs génériques ===
 
Les pointeurs typés sont également des adresses mémoires donc on peut assigner les uns aux autres.
 
Lexique
p : pointeur
p_T : ^T
 
Ces opérations sont possibles :
 
p:=p_T
p_T:=t_T
 
Cependant, on ne peut utiliser les procédures new() et delete() en leur passant un pointeur générique en paramètre. En effet, le type de la donnée pointée étant inconnu le système d'exploitation de peut savoir combien d'espace réservé.
 
=== Exemple avec des entiers ===
 
Algorithme exemple
Lexique
p : pointeur
p_entier : ^entier
début
new(p_entier)
p_entier^:=1
p:=p_entier
p_entier:=p
ecrire(p_entier^) (* affiche 1 *)
fin
 
== Les effets de bord ==
 
Que se passe-t-il ?
 
Algorithme bogue
Lexique
p : pointeur
p_entier : ^entier
p_carac : ^caractere
début
new(p_entier)
p_entier^:=2645
p:=p_entier
p_caractere:=p
ecrire(p_carac^) (* ???? *)
fin

Menu de navigation