Types de pointeurs
Avant de parler de types de pointeurs, il faut d'abord parler de variables allouées statiquement. Une variable statique est une variable déclarée dans un programme et désignée par la suite par son identifiant. Il est appelé statique, car il existe (c'est-à-dire que de la mémoire lui est allouée) pendant toute l'exécution du bloc (programme, procédure ou fonction) auquel il est local. Une variable peut, par contre, être créée et détruite dynamiquement lors de l'exécution d'un bloc (sans aucune corrélation avec la structure statique des programmes). Une telle variable est par conséquent appelée une variable dynamique ou une variable identifiée.
Variables de pointeur et variables identifiées (dynamiques)
Les variables identifiées (dynamiques) n'apparaissent pas dans une déclaration de variable explicite et ne sont pas accessibles directement par les identificateurs. Au lieu de cela, ils sont créés et détruits à l'aide des procédures prédéclarées New et Dispose, et ils sont identifiés par des valeurs de pointeur (pouvant être mise en oeuvre comme rien de plus que les adresses d'entreposage des variables nouvellement allouées). Les valeurs de pointeur doivent être affectées à des variables de pointeur déjà existantes ayant le type de pointeur approprié.
La description d'un pointeur de type P spécifie un domaine de type T :
Type P=↑T;
ou
Type P=^T;
L'ensemble des valeurs de pointeur de type P se compose d'un nombre illimité de valeurs d'identification, dont chacune identifie une variable de type T, ainsi que la valeur spéciale NIL n'identifiant aucune variable. Une variable identifiée (dynamique) est accédée par la valeur de pointeur qui l'identifie; en particulier, si Ptr est déclaré comme :
Var Ptr:P;
et une valeur d'identification a été attribuée à Ptr, alors la construction Ptr↑ est utilisée pour désigner la variable identifiée.
Le Ptr↑ est une erreur si Ptr est NIL ou indéfini. Utilisez New(Ptr) pour créer ou allouer une variable identifiée de type T et pour affecter sa valeur d'identification à Ptr. Utilisez Dispose(Ptr) pour détruire ou désallouer la variable identifiée par la valeur de Ptr; Ptr devient indéfini après Dispose. Les pointeurs sont un outil simple pour la construction de structures de données compliquées et flexibles (et même récursives). Si le type T est une structure d'enregistrement contenant un ou plusieurs champs de type P, des structures équivalentes à des graphes finis arbitraires peuvent être construites, où les variables identifiées représentent les noeuds et les pointeurs sont les arêtes.