Freigeben über


Konvertierungen in und aus Zeigertypen

Ein Zeiger auf einen Typ Wert kann in einen Zeiger auf einen anderen Typ konvertiert werden.Allerdings wird das Ergebnis der Anforderungen und Ausrichtung aufgrund der unterschiedlichen Größen des Arbeitsspeichers der Typen nicht definiert werden.Ein Zeiger auf ein Objekt kann in einen Zeiger auf ein Objekt, dessen Typ einheitlich gespeichert oder weniger strenge erfordert, Ausrichtung und wieder zurück konvertiert werden unverändert.

Ein Zeiger auf void kann zu oder von einem Zeiger auf einen Typ oder Einschränkung ohne Datenverlust konvertiert werden.Wenn das Ergebnis wieder dem ursprünglichen Typ konvertiert wird, wird der ursprüngliche Zeiger wiederhergestellt.

Ist ein Zeiger auf einen anderen Zeiger mit dem gleichen Typ, aber Tabellen verschiedener oder zusätzlichen Qualifizierer konvertiert wird, ist der neue Zeiger derselbe wie die alten außer Einschränkungen, die im neuen Qualifizierer auferlegt werden.

Ein Zeigerwert kann auch in einen ganzzahligen Wert konvertiert werden.Der Pfad für die Konvertierung hängt von der Größe des Zeigers und der Größe des ganzzahligen Typs gemäß den folgenden Regeln:

  • Wenn die Größe des Zeigers größer oder gleich der Größe des ganzzahligen Typs ist, verhält sich der Zeiger als Wert ohne Vorzeichen in der Konvertierung nur dadurch, dass er kann nicht in einen Gleitkommawert konvertiert werden.

  • Wenn der Zeiger kleiner als der ganzzahlige Typ ist, wird der Zeiger zum ersten Mal auf einen Zeiger mit derselben Größe als ganzzahligen Typ konvertiert. Anschließend wird das ganzzahligen Typ konvertiert.

Umgekehrt kann ein ganzzahliger Typ in einen Zeigertyp gemäß den folgenden Regeln konvertiert werden:

  • Wenn der ganzzahlige Typ dieselbe Größe als Zeigertyp ist, löst die Konvertierung einfach den ganzzahligen Wert als Zeiger (eine ganze Zahl ohne Vorzeichen) behandelt werden sollen.

  • Wenn die Größe des ganzzahligen Typs zur Größe des Zeigertyps abweicht, wird der ganzzahlige Typ zuerst die Größe des Zeigers unter Verwendung der Konvertierung für konvertiert, die in Tabellen und Konvertierung ganzzahligen Typen von signiertenKonvertierung von Ganzzahltypen ohne Vorzeichenangegeben sind.Er wird dann als Zeigerwert behandelt.

Ein ganzzahliger konstanter Ausdruck mit einer Ausdrucks umwandlung des Werts 0 oder solches, um void * eingeben kann durch eine Typumwandlung durch Zuweisung oder im Vergleich zu einem Zeiger eines beliebigen Typs konvertiert werden.Dies erzeugt einen NULL-Zeiger, der gleich einem anderen NULL-Zeiger desselben Typs ist, aber dieser NULL-Zeiger ist nicht gleich einem Zeiger auf eine Funktion oder ein Objekt.Ganze Zahlen können andere als die Konstante 0 in den Zeigertyp konvertiert werden, aber das Ergebnis ist nicht übertragbar.

Siehe auch

Konzepte

Zuweisungskonvertierungen