Opérateur indirection : *

Syntaxe

* cast-expression

Notes

L’opérateur d’indirection unaire (*) déréférence un pointeur ; c’est-à-dire qu’il convertit la valeur d’un pointeur en une valeur l. L’opérande de l’opérateur d’indirection doit être un pointeur vers un type. Le résultat de l'expression d'indirection est le type à partir duquel le type pointeur est dérivé. L’utilisation de l’opérateur * dans ce contexte est différente de sa signification en tant qu’opérateur binaire, qui est la multiplication.

Si l'opérande pointe vers une fonction, le résultat est un désignateur de fonction. S'il pointe vers un emplacement de stockage, le résultat est une l-value désignant l'emplacement de stockage.

L'opérateur d'indirection peut être utilisé cumulativement pour déréférencer les pointeurs vers des pointeurs. Par exemple :

// expre_Indirection_Operator.cpp
// compile with: /EHsc
// Demonstrate indirection operator
#include <iostream>
using namespace std;
int main() {
   int n = 5;
   int *pn = &n;
   int **ppn = &pn;

   cout  << "Value of n:\n"
         << "direct value: " << n << endl
         << "indirect value: " << *pn << endl
         << "doubly indirect value: " << **ppn << endl
         << "address of n: " << pn << endl
         << "address of n via indirection: " << *ppn << endl;
}

Si la valeur du pointeur n'est pas valide, le résultat n'est pas défini. La liste ci-dessous inclut certaines des conditions les plus courantes qui invalident une valeur de pointeur.

  • Le pointeur est un pointeur null.

  • Le pointeur spécifie l'adresse d'un élément local qui n'est pas visible au moment de la référence.

  • Le pointeur spécifie une adresse alignée de façon inappropriée pour le type de l'objet désigné.

  • Le pointeur spécifie une adresse non utilisée par le programme en cours d'exécution.

Voir aussi

Expressions avec opérateurs unaires
Opérateurs intégrés, priorité et associativité C++
address-of, opérateur
Opérateurs d’indirection et d’adresse