Heim >Backend-Entwicklung >C++ >Können C-Referenzen neu zugewiesen werden oder handelt es sich nur um eine Wertänderung?
Referenzneuzuweisung in C
Das Deklarieren einer Referenz in C erfordert eine Initialisierung, was den Eindruck erweckt, dass Referenzen unveränderlich sind und nicht neu zugewiesen werden können. Betrachten Sie jedoch das folgende Programm:
#include <iostream> 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; // Is this not reassigning the reference? cout << "ri is : " << ri << '\n'; return 0; }
Der Code wird erfolgreich kompiliert und erzeugt die erwartete Ausgabe:
ri is : 5 ri is : 10 ri is : 9
Entgegen der landläufigen Meinung weist die Zeile ri = j die Referenz nicht neu zu ri. Stattdessen ändert es den Wert von i durch die Referenz ri, was durch das Drucken von i vor und nach der Zeile belegt wird. Dieses Verhalten wird durch die Tatsache unterstützt, dass &ri und &i dieselbe Adresse ausgeben, was darauf hinweist, dass ri eine Referenz auf i bleibt.
Im Gegensatz dazu verhindert die Deklaration einer konstanten Referenz (const int &cri = i) eine Neuzuweisung der Referenz selbst.
Das obige ist der detaillierte Inhalt vonKönnen C-Referenzen neu zugewiesen werden oder handelt es sich nur um eine Wertänderung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!