menu prev next

LES POINTEURS
Les pointeurs permettent de représenter des structures de données complexes, de changer le contenu d'une variable s'ils sont mis comme arguments de fonctions, de travailler avec de la mémoire qui a été allouée dynamiquement et de stocker les données de manière complexe.

Un pointeur fournit un moyen indirect d'accéder à la valeur d'une variable. Prenons un exemple pour mieux comprendre son fonctionnement :


    program pointers1( output );
    type    int_pointer = ^integer;

    var	iptr : int_pointer;
    begin
        new( iptr );
        iptr^ := 10;
        writeln('La valeur est de ', iptr^);
        dispose( iptr )
    end.

La ligne
   type    int_pointer = ^integer;
déclare un nouveau type de variable nommé int_pointer. Ce type est un pointeur ( ce qui est dénoté par ^ ) vers un entier.

La ligne

   var iptr : int_pointer;
déclare une variable nommée iptr, de type int_pointer. La variable iptr ne contient pas de valeur numérique, mais l'adresse mémoire d'une variable créée de manière dynamique ( en utilisant new). Il n'y a pas d'espace mémoire alloué par iptr, ce qui signifie que vous ne pouvez pas l'utiliser avant d'en avoir réservé. De manière imagée, la situation ressemble à ceci :

La ligne

       new( iptr );
alloue dynamiquement une zone de mémoire ( c'est-à-dire qu'elle est réservée lorsque le programme est exécuté par l'ordinateur). La variable de type pointeur iptr pointe vers un espace mémoire qui peut être utilisé pour stocker une valeur entière. De manière imagée, cela pourrait ressembler à ceci :

La ligne

       iptr^ := 10;
permet d'écrire dans l'espace mémoire alloué la valeur entière 10. De manière imagée, cela pourrait ressembler à ceci :

La ligne

       dispose( iptr )
permet de désallouer ( libérer ) l'espace mémoire alloué ( réservé ) pour iptr et de la rendre au système. Ceci signifie que iptr ne peut plus être utilisé à moins qu'il ne soit associé de nouveau à une instruction new(). De manière imagée, la situation pourrait se représenter par ceci :


Copyright B Brown/P Henry/CIT, 1988-1995. Tous droits réservés.
Copyright UCL/INGI, 1995. Tous droits réservés.
URL: http://candix1.fsa.ucl.ac.be/langages/Pascal/tutoriel/pas065.htm
menu prev next