Heim > Backend-Entwicklung > C++ > Können C-Referenzen neu zugewiesen werden oder passiert etwas anderes?

Können C-Referenzen neu zugewiesen werden oder passiert etwas anderes?

Susan Sarandon
Freigeben: 2024-12-04 22:07:13
Original
403 Leute haben es durchsucht

Can C   References Be Reassigned, or Is Something Else Happening?

Können Referenzen in C neu zugewiesen werden?

In C werden Referenzen oft als unveränderliche Einheiten angepriesen, die ein für alle Mal initialisiert werden müssen. Ein aktueller Codeausschnitt hat jedoch Fragen zu diesem Prinzip aufgeworfen.

Codeausschnitt:

int i = 5, j = 9;
int &ri = i;
cout << "ri is : " << ri << "\n";
i = 10;
cout << "ri is : " << ri << "\n";
ri = j;
cout << "ri is : " << ri << "\n";
Nach dem Login kopieren

Beobachtungen:

  • Der Code wird erfolgreich und ohne Fehler kompiliert.
  • Die Ausgabe zeigt, dass ri zunächst auf zeigt i und ändert sich dann, um auf j zu verweisen.

Frage:

Ordnet dieser Code die Referenz ri wirklich neu zu oder passiert etwas anderes?

Antwort:

Nein, ri ist immer noch eine Anspielung auf i. Die scheinbare Neuzuweisung ist tatsächlich eine Modifikation von i durch die Referenz ri.

Erklärung:

Wenn eine Referenz deklariert wird (z. B. int &ri = i), wird sie gebunden mit dem Objekt (in diesem Fall i) verbunden und bleibt während des gesamten Programms damit verknüpft. Der Code ri = j weist ri nicht neu zu, sondern ändert vielmehr den Wert von i durch die Referenz ri.

Um dies zu beweisen, kann man die Adressen von ri und i mit &ri und &i ausdrucken, was zeigen würde, dass sie bestehen bleiben das gleiche. Wenn ri außerdem j neu zugewiesen würde, wäre es nicht mehr möglich, i durch ri zu ändern, was im angegebenen Code nicht der Fall ist.

Schlussfolgerung:

Während Verweise im Codeausschnitt scheinbar neu zuweisbar sind, ist dies nicht der Fall. Stattdessen verändern sie indirekt das Objekt, auf das sie verweisen. Konstante Referenzen (z. B. const int &cri = i) verhindern solche Änderungen und erzwingen echte Unveränderlichkeit.

Das obige ist der detaillierte Inhalt vonKönnen C-Referenzen neu zugewiesen werden oder passiert etwas anderes?. 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