Heim > Backend-Entwicklung > C++ > Was passiert, wenn Sie einen NULL-Zeiger auf eine Referenz in C dereferenzieren?

Was passiert, wenn Sie einen NULL-Zeiger auf eine Referenz in C dereferenzieren?

Mary-Kate Olsen
Freigeben: 2024-12-15 01:24:10
Original
242 Leute haben es durchsucht

What Happens When You Dereference a NULL Pointer to a Reference in C  ?

NULL-Zeiger für Referenzen dereferenzieren

Der C-Standard befasst sich explizit mit dem Verhalten der Dereferenzierung eines NULL-Zeigers, um eine Referenz zu erhalten. Diese Vorgehensweise wird als undefiniertes Verhalten betrachtet.

Im bereitgestellten Beispiel:

int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;
Nach dem Login kopieren

Der Versuch, den NULL-Zeiger ptr zu dereferenzieren, wird als undefiniertes Verhalten betrachtet. Gemäß dem Standard (8.3.2/4 „Referenzen“):

Hinweis: Insbesondere kann eine Nullreferenz in einem wohldefinierten Programm nicht existieren, da dies die einzige Möglichkeit zum Erstellen ist Eine solche Referenz würde darin bestehen, sie an das „Objekt“ zu binden, das durch Dereferenzierung eines Nullzeigers erhalten wird, was zu undefiniertem Verhalten führt.

Daher wird dem Objekt eine Referenz zugewiesen Der dereferenzierte NULL-Zeiger ist ungültig und das Verhalten ist nicht genau definiert. Das Ergebnis der Verwendung von ptr2, das auf die vom dereferenzierten NULL-Zeiger erhaltene Referenz zeigt, ist ebenfalls undefiniert.

Eine Ausnahme vom Verbot der Dereferenzierung von NULL-Zeigern besteht bei Verwendung mit dem sizeof-Operator. In diesem Zusammenhang wird der Zeiger nicht tatsächlich ausgewertet, sodass seine Dereferenzierung kein undefiniertes Verhalten verursacht. Diese Ausnahme ist jedoch auf den sizeof-Operator beschränkt.

Das obige ist der detaillierte Inhalt vonWas passiert, wenn Sie einen NULL-Zeiger auf eine Referenz in C dereferenzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage