Manuel de suivi dynamique Solaris

Pointeurs génériques

Il est parfois utile de représenter ou de manipuler une adresse de pointeur générique dans un programme D sans spécifier le type de données référencées par le pointeur. Des pointeurs génériques peuvent être spécifiés à l'aide du type void *, où le mot-clé void représente l'absence d'informations de type spécifiques, ou à l'aide de l'alias de type intégré uintptr_t qui représente un alias de type de taille entier non signé approprié d'un pointeur dans le modèle de données en cours. Vous ne pouvez pas appliquer l'arithmétique de pointeur à un objet du type void *, et ces pointeurs ne peuvent pas être déréférencés sans qu'ils aient été tout d'abord forcés à un autre type. Vous pouvez forcer le type d'un pointeur sur uintptr_t en cas d'exécution nécessaire d'arithmétique d'entier sur la valeur de pointeur.

Les pointeurs sur void peuvent être utilisés lorsqu'un autre type de données pour un pointeur est nécessaire, comme une expression de tuple d'ensemble associatif ou à droite d'une instruction d'affectation. De même, un pointeur sur un quelconque type de données peut être utilisé lorsqu'un pointeur sur void est nécessaire. Pour utiliser un pointeur de type non-void à la place d'un autre type de pointeur non-void, un forçage de type explicite est nécessaire. Vous devez toujours utiliser des forçages de type explicites pour convertir des pointeurs en types d'entier comme uintptr_t ou pour reconvertir ces entiers dans le type de pointeur approprié.