Dringend C++ Nachhilfe benötigt! - mit Bezahlung
Moderator: (M) Mod.-Team Allgemein
Fehler in Hörsaalübung?
Hallo,
in der Hörsaalübung zu Skript5 bin ich gerade ins Stocken geraten:
(die kommentare stammen von mir, der quelltext aus der Hörsaalübung)
double* zeigerVar; //zeigerVar zeigt auf eine Double Variable, im Moment auf 0
double wert;
wert = 1.23; //Wert wird initialisiert mit 1.23
zeigerVar = &wert; //zeigerVar zeigt auf wert //zeigerVar hat die Adresse von wert gespeichert
*zeigerVar = 2.34; //zeigerVar sollte wieder wert ausgeben, oder??
müsste beim Dereferenzieren unten nicht wieder 1.23 herauskommen?
in der Hörsaalübung zu Skript5 bin ich gerade ins Stocken geraten:
(die kommentare stammen von mir, der quelltext aus der Hörsaalübung)
double* zeigerVar; //zeigerVar zeigt auf eine Double Variable, im Moment auf 0
double wert;
wert = 1.23; //Wert wird initialisiert mit 1.23
zeigerVar = &wert; //zeigerVar zeigt auf wert //zeigerVar hat die Adresse von wert gespeichert
*zeigerVar = 2.34; //zeigerVar sollte wieder wert ausgeben, oder??
müsste beim Dereferenzieren unten nicht wieder 1.23 herauskommen?
Can't wait the rythm...
-
- TalkING. Superposter
- Beiträge: 297
- Registriert: Mi, 17. Feb. 10, 15:55
hi ...
zeigerVar ist nun sozusagen ein anderer Name von wert ... deshalb ist der aktuelle Wert von wert und von *zeigerVar gleich und zwar 2.34
es ist so als hättest du wert = 2.34 geschrieben.
zeigerVar ist nun sozusagen ein anderer Name von wert ... deshalb ist der aktuelle Wert von wert und von *zeigerVar gleich und zwar 2.34
es ist so als hättest du wert = 2.34 geschrieben.
kleiner Hinweis ... er zeigt auf eine unbekannte Position und nicht auf 0 ( denn er ist weder static noch global)double* zeigerVar; //zeigerVar zeigt auf eine Double Variable, im Moment auf 0
Wenn du eine speicheradresse dereferenzierst bekommst du den Wert, der an der entsprechenden Speicheradresse steht.
Nur, du hast in dem Statement *zeigerVar = 2.34 eine Zuweisung - du machst praktisch erst die derefernzierung des speicherwerts, und dann weisst du dieser Speicherstelle einen neuen Wert zu (2.34).
Danach ist also wert == *zeigerVar == 2.34.
Edit:
Jein, beim dereferenzieren (*zeigerVar) bekommst du den Wert, auf den zeigerVar zeigt. Da zeigerVar auf den Speicher zeigt, den "wert" belegt, kommt da der selbe Wert raus den du vorher "wert" zugewiesen hast, also 1.23.müsste beim Dereferenzieren unten nicht wieder 1.23 herauskommen?
Nur, du hast in dem Statement *zeigerVar = 2.34 eine Zuweisung - du machst praktisch erst die derefernzierung des speicherwerts, und dann weisst du dieser Speicherstelle einen neuen Wert zu (2.34).
Danach ist also wert == *zeigerVar == 2.34.
Edit:
Jupp.ach wird dann quasi 2.34 in den Speicherplatz von wert geschriebn, also 1.23 genau überschriebn. heisst es das?
LOLWUT
-
- TalkING. Superposter
- Beiträge: 297
- Registriert: Mi, 17. Feb. 10, 15:55
und ich bin es nochmal vor dem Schlafengehen. Wenn ich eine dynamische Variable initialisieren will, meinetwegen a, mach ich das dann so:
int* p = new int a; ?
oder muss das a in Klammern gesetzt werden? denn im Skript steht zB soetwas:
int* p = new int(7);
wieso steht da die 7 in Klammern?
gute Nacht
PS: Ihr seid echt klasse!
int* p = new int a; ?
oder muss das a in Klammern gesetzt werden? denn im Skript steht zB soetwas:
int* p = new int(7);
wieso steht da die 7 in Klammern?
gute Nacht
PS: Ihr seid echt klasse!
Can't wait the rythm...