Forum: Compiler & IDEs Pointer auf double


von bst (Gast)


Lesenswert?

Wenn ich eine Funktion habe

void test(double *d)

und diese per

test(&myDoubleValue);

aufrufe, kann ich dann in der test-Funktion den Wert nicht per

d = 10.23;

manipulieren?

von johnny.m (Gast)


Lesenswert?

Wenn schon, dann
1
*d = 10.23;

von bst (Gast)


Lesenswert?

Aber wird dann nicht die Adresse überschrieben? Bin mir nicht mehr 
sicher...

von johnny.m (Gast)


Lesenswert?

Mit dem Dereferenzierungsoperator "*" greift man auf das Element, auf 
das der Zeiger zeigt, zu. So wie Du es geschrieben hast (ohne "*") 
überschreibst Du die Adresse, die in d gespeichert ist. Da Du allerdings 
d einen Fließkommawert zuweisen willst, dürfte es da eine Fehlermeldung 
geben. Der Zeiger selbst ist immer ein ganzzahliger Wert (eben eine 
Adresse).

von bst (Gast)


Lesenswert?

Ja, funktioniert ohne Fehlermeldung. Hoffentlich auch am Controller...

von johnny.m (Gast)


Lesenswert?

Nochmal zusammenfassend, damit es klarer wird:
In
1
double *d;
wird ein Zeiger auf einen double-Wert deklariert. Der Zeigervariable "d" 
wird mit
1
d = &myDoubleValue;
die Adresse einer double-Variable übergeben. "d" (also die reine, nackte 
Variable) enthält jetzt eben diese Adresse. Will man das Element 
ansprechen, dessen Adresse jetzt in "d" gespeichert ist, dann verwendet 
man den Dereferenzierungsoperator "*":
1
double myDoubleValue2;
2
myDoubleValue2 = *d;
jetzt enthält "myDoubleValue2" den Wert von "myDoubleValue".

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.