Heim > Backend-Entwicklung > C++ > Können Referenzen in C neu zugewiesen werden?

Können Referenzen in C neu zugewiesen werden?

Patricia Arquette
Freigeben: 2024-12-05 20:03:11
Original
925 Leute haben es durchsucht

Can References Be Reassigned in C  ?

Referenzneuzuweisung in C verstehen

In C wird allgemein angegeben, dass Referenzen bei der Deklaration initialisiert werden müssen und nicht neu zugewiesen werden können. Ein kürzlich durchgeführtes Experiment hat jedoch Zweifel an dieser Vorstellung aufkommen lassen. Untersuchen wir das Verhalten der Referenzneuzuweisung im folgenden Programm:

#include <iostream>
#include <stdio.h>
#include <conio.h>

using namespace std;

int main()
{
    int i = 5, j = 9;

    int &ri = i;
    cout << "ri is : " << ri << "\n";

    i = 10;
    cout << "ri is : " << ri << "\n";

    ri = j; // *** Reassignment at Issue ***
    cout << "ri is : " << ri << "\n";

    getch();
    return 0;
}
Nach dem Login kopieren

Das Programm weist die Referenz ri der Ganzzahlvariablen i zu und macht ri zu einem Alias ​​für i. Anfänglich zeigt ri auf den Wert 5. Wenn i auf 10 geändert wird, spiegelt ri diese Änderung korrekt wider. Der entscheidende Punkt ist jedoch die nächste Aussage: ri = j.

Ist das nicht eine Neuzuordnung der Referenz?

Die Antwort lautet überraschenderweise nein. ri ist immer noch eine Anspielung auf i. Um dies zu demonstrieren, können Sie die Adressen von ri und i vergleichen: Sie sind identisch. Was Sie beobachten, ist keine Neuzuweisung der Referenz, sondern vielmehr eine Änderung des Werts, der an der Speicherstelle gespeichert ist, auf die ri zeigt.

Einfacher ausgedrückt ist ri = j äquivalent zu *(&ri) = j , wobei &ri die Speicheradresse von ri abruft und * sie dereferenziert, um auf den Wert zuzugreifen.

Zum Vergleich: Wenn Sie einen const int &cri = i erstellen, wird dies der Fall sein Verhindern Sie jede Neuzuweisung zu cri und erzwingen Sie dessen konstante Natur.

Zusammenfassend lässt sich sagen, dass Referenzen zwar nicht neuen Variablen in C neu zugewiesen werden können, sie jedoch verwendet werden können, um den Wert des Objekts zu ändern, auf das sie verweisen, wie in unserem Programm zu sehen ist .

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