Was bedeutet. "&" vor einer Variablen in einer Funktion?

Hallo,

es geht hier um die Funktion SunTimes:

double SunTimes (float latitude, float longitude, double &Sonnenaufgang, double &Sonnenuntergang) { ....... }

die wie folgt aufgerufen wird:

Tageslaenge = SunTimes (latitude, longitude, Sonnenaufgang, Sonnenuntergang);

Was bedeutet hier z.B. bei double &Sonnenaufgang das "&" vor der Variablen?

Ich weiss, dass "&" wichtig ist, aber ich kann damit programmtechnisch nichts anfangen.

Über eine kurze Info würde ich mich freuen.
Danke, mischu

Hier wohl: Parameterübergabe per Referenz.
Ohne das &: Parameterübergabe als Value/Wert

& wird auch als Adressoperator genutzt
& oder als binäres AND

Danke,
aber ich verstehe nicht, was hier "Parameterübergabe per Referenz" bedeutet.
Ich bin zwar kein C/C++ Anfänger, aber auch kein Experte.
Würdest Du mir das bitte genauer erklären?
Warum macht man das in Funktionen so?

Danke, mischu

mischu:
Warum macht man das in Funktionen so?

Funktionen legen Variablen lokal an und bearbeiten diese. Das kann Vorteile haben, wird aber nicht immer benötigt. Dann kann man mit einer Referenz arbeiten. So läßt sich auch die Anzahl der "Rückgabewerte" erhöhen, weil sonst nur einer möglich ist.

Aus einem C-Buch: Zeiger als Funktionsparameter

Ich glaube Du übergibst damit den Zeiger auf das Objekt oder Variable..

Ohne das & übergibst Du eine neue Kopie des Objekts oder Wertes einer Variable.

Während Du bei

int x=16;

Funktion(x) nur die 16 übergibst, übergibt man bei Funktion(&x) eine Referenz auf x.

wenn Du in der Funktion das x änderst, ändert sich auch dein vorher erstelltes x.

Würdest Du mir das bitte genauer erklären?

Ungerne, denn ich bin ein überzeugter: DokuVorLeseVerweigerer

Aber einen Link kann ich dir geben.
Vielleicht hilft das schon...

Ich glaube Du übergibst damit den Zeiger auf das Objekt oder Variable..

Es hat gewisse Ähnlichkeit mit Zeigern, ist aber dennoch ganz was anderes.
z.B. Zeiger können ungültig werden. Referenzen nicht.

Deja vu? Warum wiederholst du Post #2?

Sorry, war ein Versehen.

combie:
Ungerne, denn ich bin ein überzeugter: DokuVorLeseVerweigerer

Ja, verstehe ich, aber meine Recherchen im web waren zu diesem Thema leider erfolglos :stuck_out_tongue_closed_eyes:

MfG mischu

Dann suchst du nach den falschen Begriffen. "C++ Referenz" liefert alles was du brauchst

Man verwendet Referenzparameter entweder wenn man die Änderung in der Funktion außerhalb braucht (also als Rückgabewert) oder bei der Übergabe von Objekten damit kein Speicher für eine Kopie verschwendet wird. Arduino-Anfänger übergeben z.B. sehr gerne String Objekte als Kopie.

Ja, verstehe ich, aber meine Recherchen im web waren zu diesem Thema leider erfolglos

Darum habe ich dir ja auch einen Link gepostet.
Da steht auch nicht weniger, als wir wissen können.
(glaube ich)

Ansonsten kann ich dir nur die 1000 Seitige C++ Bibel empfehlen.

Denn, wo diese eine Lücke ist, da sind sicherlich noch mehr Lücken.

Bestimmt sind da noch Lücken (s.o.).

Aber danke für Deine Hilfe.