Forum: PC-Programmierung Funktion mit Rückgabe einer Referenz


von Tom (Gast)


Lesenswert?

Hallo,

ich stehe ein vor einem Rätsel. Bei folgendem Code wird das Argument der 
Funktion verändert. Ich kann mir das nicht erklären. Eigentlich gibt die 
Funktion eine Referenz(Adresse) zurück. Hier wird aber die Referenz der 
Variable im Argument verändert. Wieso ist das so?
1
int &Zahl(int &x)
2
{
3
    return x;
4
}
5
6
int main()
7
{
8
9
    int a=3;
10
11
    Zahl(a)=5;
12
    cout << "a=" << a << endl;
13
14
return 0;
15
}

Nach der Ausführung hat a den Wert 5.

von B. S. (bestucki)


Lesenswert?

Tom schrieb:
> Bei folgendem Code wird das Argument der Funktion verändert.

Nein, das Argument wird nicht verändert. Die Funktion Zahl liefert eine 
Referenz auf a und anschliessend weist du via Referenz der Variable a 
den Wert 5 zu.

Man kann deinen Code auch mit Zeigern schreiben. Macht das Gleiche, hat 
aber eine andere Syntax:
1
int * Zahl(int * x)
2
{
3
    return x;
4
}
5
6
int main()
7
{
8
    int a = 3;
9
10
    *Zahl(&a) = 5;
11
    cout << "a=" << a << endl;
12
13
return 0;
14
}

: Bearbeitet durch User
von Tom (Gast)


Lesenswert?

Mann, Mann... vielen Dank! Mit Deinem Beispiel ist der Groschen 
gefallen. Vielen Dank!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.