Type pointeur
Le langage a été défini pour être proche de la machine. Le type pointeur qui existait dans d'autres langages a été introduit avec une souplesse d'utilisation importante, afin d'écrire des programmes proches du matériel support, satisfaisant ainsi en partie les utilisateurs de langage bas niveau comme l'assembleur.
Un pointeur est une donnée liée à la machine d'exécution puisqu'elle représente une adresse du domaine d'adressage du programme.
Une déclaration de pointeur utilise la syntaxe suivante :
Type *pt ;
Type est un type prédéfini ou défini par le programmeur ; pt est le pointeur pouvant contenir une adresse.
Si un pointeur contient l'adresse d'une donnée de type Type, l'accès à la donnée se fait par déréférencement du pointeur. On utilise à cette fin l'opérateur unaire *. Ainsi hors déclaration, l'écriture « *pt » permet d'accéder à la variable pointée.
À l'inverse, l'accès à l'adresse d'une variable nécessite l'utilisation de l'opérateur &. Dans la séquence suivante :
Type var ;
pt = &var ;
La seconde instruction permet de stocker l'adresse de var dans le pointeur pt.
Attention :
Notons que l'affectation de l'adresse ne modifie pas le contenu de la variable. Dans l'exemple, la variable var
n'a pas de valeur définie.
De même à la déclaration, la valeur du pointeur n'a pas de valeur valide. Et contrairement à l'utilisation d'une variable quelconque non initialisée qui donnera des résultats erronés, l'utilisation d'un pointeur non initialisé aboutira à un accès d'une zone mémoire non souhaitée qui généralement se traduira par un arrêt du programme suite à une violation d'espace mémoire réservé.
Remarque :
L'utilisation des pointeurs sera étudiée plus loin.