Heim >Backend-Entwicklung >C++ >Können C-Referenzen neu zugewiesen werden oder handelt es sich nur um eine Wertänderung?

Können C-Referenzen neu zugewiesen werden oder handelt es sich nur um eine Wertänderung?

Barbara Streisand
Barbara StreisandOriginal
2024-12-05 01:34:11718Durchsuche

Can C   References Be Reassigned, or is it Just Value Modification?

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!

Stellungnahme:
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