Opérateurs de référencement/déréférencement

De RAD Studio
Aller à : navigation, rechercher

Remonter à Opérateurs unaires - Index

Syntaxe

& expression-transtypage
* expression-transtypage

Remarques

Les opérateurs & et * peuvent être combinés pour référencer ou déréférencer des pointeurs transmis à des fonctions.

Opérateur de référencement ( & )

L'opérateur de référencement permet de transmettre l'adresse d'un pointeur à une fonction hors de main().

L'opérande expression-transtypage doit être soit :

  • un désignateur de fonction
  • une lvalue désignant un objet qui n'est pas un champ de bits et qui n'est pas déclaré au moyen du spécificateur de stockage de classe register.

Si l'opérande est du type <type>, le résultat est du type pointeur sur <type>.

Certains identificateurs non lvalue, comme des noms de fonctions et des noms de tableaux, sont automatiquement convertis en types "pointeur sur X" lorsqu'ils apparaissent dans certains contextes. L'opérateur & est utilisable avec ces objets, mais son emploi est alors redondant et nous le déconseillons.

Dans l'exemple suivant :

   T t1 = 1, t2 = 2;
   T *ptr = &t1;      // Pointeur initialisé
   *ptr = t2;           // Même effet que t1 = t2

T *ptr = &t1 est traité comme

   T *ptr;
   ptr = &t1;

de sorte que c'est ptr, et non pas *ptr, qui fait l'objet d'une affectation. Une fois que ptr a été initialisé avec l'adresse de &t1,, il peut être déréférencé pour donner la lvalue *ptr.

Opérateur d'indirection ( * )

Utilisez l'astérisque (*) dans une expression variable pour créer des pointeurs. Il faut utiliser l'opérateur d'indirection dans une fonction externe pour obtenir la valeur d'un pointeur transmis par adresse.

Si l'opérande est du type pointeur de fonction, le résultat est un descripteur de fonction.

Si l'opérande est un pointeur d'objet, le résultat est une lvalue désignant cet objet.

Dans les situations suivantes, le résultat de l'indirection n'est pas défini :

  1. L'expression-transtypage est un pointeur NULL.
  2. L'expression-transtypage est l'adresse d'une variable automatique alors que l'exécution du bloc qui la définit est terminée.

Remarque :  & peut également servir d'opérateur ET bit à bit.

Remarque :  * peut également servir d'opérateur multiplicatif.

Voir aussi