Handbuch zur dynamischen Ablaufverfolgung in Solaris

Unspezifische Zeiger

Unter Umständen ist es praktisch, in einem D-Programm eine unspezifische (generische) Zeigeradresse darzustellen oder zu manipulieren, ohne den Datentyp anzugeben, auf den der Zeiger verweist. Unspezifische Zeiger können mit dem Typ void * angegeben werden, wobei das Schlüsselwort void für das Fehlen einer spezifischen Typangabe steht. Zu diesem Zweck kann ebenfalls der integrierte Typ-Aliasname uintptr_t verwendet werden, der einen vorzeichenlosen Integer-Typ einer für einen Zeiger im aktuellen Datenmodell geeigneten Größe darstellt. Auf Objekte des Typs void * darf Zeigerarithmetik nicht angewendet werden und diese Zeiger können nicht dereferenziert werden, ohne sie zuerst explizit in einen anderen Typ umzuwandeln. Wenn Sie Ganzzahlenarithmetik an einem Zeigerwert durchführen müssen, können Sie den Zeiger explizit in den Typ uintptr_t umwandeln.

Zeiger auf void können in jedem Kontext verwendet werden, in dem ein Zeiger auf einen anderen Datentyp erforderlich ist, wie beispielsweise bei einem Tupel-Ausdruck für einen assoziativen Vektor oder der rechten Seite einer Zuweisungsanweisung. Analog kann in einem Kontext, in dem ein Zeiger auf void benötigt wird, ein Zeiger eines beliebigen Datentyps verwendet werden. Zum Einsetzen eines Zeigers auf einen nicht-void-Typ anstelle eines anderen nicht-void-Zeigertyps wird eine explizite Typumwandlung benötigt. Um Zeiger in Integer-Typen wie uintptr_t umzuwandeln oder diese Ganzzahlen in den entsprechenden Zeigertyp zurückzukonvertieren, müssen Sie stets eine explizite Typumwandlung vornehmen.