|
|
|
|
|
|
|
Dernière mise à jour : 26 Décembre 2000
![]()

![]()
Les Pointeurs, comment ça marche ?
1- Introduction :
Voici le début, d'un long article sur l'utiliation des pointeurs, que j'ai décider de faire pour un ami et vous tous.
Nous savons, qu'il existe plusieurs types de
variables :
- Les variables Globales, dont les caractéristiques (taille,
emplacement mémoire, etc...) sont définies lors de la compilation,
puisqu'elles sont placées dans le segment de données du programme.
- Les variables Locales, qui reçoivent une allocation mémoire
dans le segment de pile qu'au moment de l'appel du sous-programme.
Il s'agit cependant dans les 2 cas de variables statiques, c'est à dire
que leur emplacement et affectation restent sous le contrôle complet du
compilateur.
Il existe une alternative à ces deux types de variables qui est l'utilisation de Pointeurs, qui sont aussi des variables statiques, mais qui contiennent un type particulier de valeurs qui sont des adresses de données en mémoire. Ce qui permet de manipuler dynamiquement les allocations mémoire. Par rapport aux 2 autres variables, le programmeur doit allouer et libérer lui même les emplacements en mémoire.
2- La déclaration :
Pour déclarer une variable pointer, il
faut préciser un identificateur de type (Byte, Integer, etc...) précédé
du caractère ^ indiquant qu'il s'agit d'un pointeur sur le type en question.
Exemple :
var p : ^Real;
// Déclaration sur un type REAL
Vous pouvez également définir
un pointeur sur un type déclaré qu'après la déclaration
du pointeur lui même.
Exemple :
Type
p = ^Tab; // Pointeur sur un type utilisateur non encore définie
Tab = Array[0..63999] of byte; // Type utilisateur
3- L'utilisation des pointeurs :
- a - L'allocation et la Libération :
- b - Manipulation des pointeurs :
- c - Algèbre des pointeurs :
- d - Les pointeurs et les Tableaux :
- e - Les listes chainées simple :
- f - Les listes chainées double :
4- Conclusions :
C'est un petit début mais, si vous aussi, avez des articles, ou des suggestions, je serai ravi, de les mettre sur cette page. Contactez moi !
![]()

![]()