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?
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.