Referenz (Programmierung)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Eine Referenz ist ein Verweis auf ein Objekt. Eine Referenz ist damit ein Aliasname für ein Objekt.

Beispiel in C++[Bearbeiten]

Wirkungsweise einer Referenz

int nOriginal = 5;
int& nReferenz = nOriginal; // Referenzobjekt angelegt
                            // die Referenz verweist auf das Original
 
nReferenz = 20;             // weist der Referenz und somit auch dem Original den Wert 20 zu
int nKopie = nOriginal;     // nKopie = 20

Beispiel zur Parameterübergabe als Referenz, siehe auch Referenzparameter

void quadrieren(int& wert) {
    wert = wert * wert;
}
 
int main() {
    int nZahl = 5;
    quadrieren(nZahl);       // Aufruf der Funktion - danach nZahl == 25
    return 0;
}

Es wird mit der Originalvariablen gearbeitet, gleichgültig ob der Variablenname in der Funktion mit dem Namen der Aufrufvariablen identisch ist.

Beispiel für Objektreferenzen

Bank& nBank = Bankenverzeichnis::nachBLZ("76543210");  // eine Referenz auf ein Bankobjekt wird beschafft
Konto& nKonto1 = nBank.kontoZugriff("1234567");        // eine Referenz auf ein bestimmtes Kontoobjekt wird beschafft
Konto& nKonto2 = nBank.kontoZugriff("1111111");        // eine Referenz auf ein weiteres Kontoobjekt wird beschafft
nKonto1.einzahlung(100.00, "EUR", nKonto2);            // eine Methode wird auf nKonto1 gerufen

Die Referenzen nBank, nKonto1 und nKonto2 referenzieren jeweils ein Objekt. Das &-Symbol kennzeichnet diese Variablen als Referenzen im Sinne der Programmiersprache.

Beispiel in Pascal[Bearbeiten]

Übergabe by reference (der Wert der übergebenen Variablen wird geändert)

procedure quadriere(var wert: integer);
begin
    wert := wert * wert;
end;

Dieser Prozedur kann nur eine Variable übergeben werden, kein Ausdruck. wert ist der lokale Name der als Referenz übergebenen Variablen; mit der Zuweisung eines Werts wird direkt der Inhalt der übergebenen Variablen geändert.

Übergabe by value (also nur des Werts, nicht der Variablen selbst; der Wert der übergebenen Variablen wird nicht geändert)

function quadrat(wert: integer): integer;
begin
    Result := wert * wert;
end;

Selbst wenn eine Zuweisung an wert erfolgen würde, würde dies den Inhalt einer etwa übergebenen Variablen nicht ändern: Übergeben wird nur ein Wert; der Bezeichner wert steht für eine lokale Variable, die nur innerhalb der Funktion gültig ist.