Funktion mit Rückgabe einer Referenz

Gast #4651210
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.
#4651224
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren