Opérateur d’indirection

Définition - Que signifie l'opérateur d'indirection?

Un opérateur d'indirection, dans le contexte de C #, est un opérateur utilisé pour obtenir la valeur d'une variable vers laquelle pointe un pointeur. Alors qu'un pointeur pointant sur une variable fournit un accès indirect à la valeur de la variable stockée dans son adresse mémoire, l'opérateur d'indirection déréférence le pointeur et renvoie la valeur de la variable à cet emplacement mémoire. L'opérateur d'indirection est un opérateur unaire représenté par le symbole (*).

L'opérateur d'indirection peut être utilisé dans un pointeur vers un pointeur vers un entier, un tableau unidimensionnel de pointeurs vers des entiers, un pointeur vers un caractère et un pointeur vers un type inconnu.

L'opérateur d'indirection est également appelé opérateur de déréférence.

Definir Tech explique l'opérateur Indirection

Le symbole (*) est utilisé pour déclarer les types de pointeurs et pour effectuer une indirection de pointeur, tandis que l'opérateur 'address-of' () renvoie l'adresse d'une variable. Par conséquent, l'opérateur d'indirection et l'opérateur d'adresse de sont inverses l'un de l'autre.

C # permet d'utiliser des pointeurs uniquement dans une région non sécurisée, ce qui implique que la sécurité du code dans cette région n'est pas vérifiée par le Common Language Runtime (CLR). Dans la région unsafe, l'opérateur d'indirection est autorisé à lire et à écrire sur un pointeur. Les instructions C # suivantes illustrent l'utilisation de l'opérateur d'indirection:

  • int a = 1, b; // ligne 1
  • int * pInt = & a; // ligne 2
  • b = * pInt; // ligne 3

Dans la première ligne ci-dessus, a et b sont des variables entières et a reçoit la valeur 1. Dans la ligne 2, l'adresse de a est stockée dans le pointeur entier pInt (ligne 2). L'opérateur de déréférencement est utilisé à la ligne 3 pour affecter la valeur à l'adresse pointée par pInt à la variable entière b.

L'opérateur d'indirection doit être utilisé pour déréférencer un pointeur valide avec une adresse alignée sur le type vers lequel il pointe, afin d'éviter un comportement indéfini lors de l'exécution. Il ne doit pas être appliqué à un pointeur void ou à une expression qui n'est pas de type pointeur, pour éviter les erreurs du compilateur. Cependant, après avoir converti un pointeur void vers le type de pointeur droit, l'opérateur d'indirection peut être utilisé.

Lors de la déclaration de plusieurs pointeurs dans une seule instruction, l'opérateur d'indirection ne doit être écrit qu'une seule fois avec le type sous-jacent et non répété pour chaque nom de pointeur. L'opérateur d'indirection est distributif en C #, contrairement à C et C ++. Lorsque l'opérateur d'indirection est appliqué à un pointeur nul, il en résulte un comportement défini par l'implémentation. Étant donné que cet opérateur est utilisé dans un contexte non sécurisé, le mot clé unsafe doit être utilisé avant lui avec l'option / unsafe lors de la compilation. Cette définition a été écrite dans le contexte de C #