Warum Referenzen in C nicht zurücksetzbar sind
C-Referenzen unterliegen im Gegensatz zu Zeigern zwei grundlegenden Eigenschaften: Sie müssen immer auf dasselbe Objekt verweisen und darf nicht null sein. Während Zeiger Flexibilität beim Zeigen auf verschiedene Objekte bieten und auf Null gesetzt werden können, fehlt in C das Konzept von „nicht nullbaren, wiedereinsetzbaren Referenzen oder Zeigern“. Dies wirft die Frage auf, warum Referenzen nicht zurückgesetzt werden können.
Felix Nievelstein stellte diese Frage zunächst und betonte die Verwendung von Referenzen, um sicherzustellen, dass Assoziationen zwischen Objekten gültig bleiben. Laut Bjarne Stroustrup, dem Designer von C, ist der Hauptgrund für die Unveränderlichkeit von Referenzen jedoch die Vermeidung potenzieller Mehrdeutigkeiten und Fehler.
In Stroustrups Worten: „Das hatte ich in der Vergangenheit wurde von Algol68-Referenzen gebissen, bei denen r1=r2 entweder über r1 dem Objekt zugewiesen werden kann, auf das verwiesen wird, oder r1 einen neuen Referenzwert zuweisen kann (Erneutes Binden von r1) abhängig vom Typ von r2. Ich wollte solche Probleme in C vermeiden.“
Durch das Verbot des erneuten Bindens von Referenzen zielt C darauf ab, Unsicherheiten und das Risiko einer versehentlichen Änderung des Zielobjekts der Referenz zu beseitigen. Diese Entwurfsentscheidung stellt sicher, dass Referenzen konsistent auf dasselbe Objekt verweisen, wodurch unerwartete Konsequenzen verhindert und die Programmkorrektheit gewahrt bleibt.
Das obige ist der detaillierte Inhalt vonWarum können C-Referenzen nicht zurückgesetzt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!