Dringend C++ Nachhilfe benötigt! - mit Bezahlung

Diskussionen rund um Themen und Veranstaltungen des 3. Bachelor-Semesters

Moderator: (M) Mod.-Team Allgemein

dolacose
TalkING. Fan
TalkING. Fan
Beiträge: 37
Registriert: Sa, 20. Mär. 10, 10:57

Fehler in Hörsaalübung?

Beitrag von dolacose » So, 27. Feb. 11, 17:18

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?
Can't wait the rythm...

Formelsammler
TalkING. Superposter
TalkING. Superposter
Beiträge: 297
Registriert: Mi, 17. Feb. 10, 15:55

Beitrag von Formelsammler » So, 27. Feb. 11, 17:41

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.
double* zeigerVar; //zeigerVar zeigt auf eine Double Variable, im Moment auf 0
kleiner Hinweis ... er zeigt auf eine unbekannte Position und nicht auf 0 ( denn er ist weder static noch global)

dolacose
TalkING. Fan
TalkING. Fan
Beiträge: 37
Registriert: Sa, 20. Mär. 10, 10:57

Beitrag von dolacose » So, 27. Feb. 11, 17:48

un wozu gibt es dann das Dereferenzieren? Ich meine, es hieß doch vorher, "zeigerVar zeigt auf Adrese von wert". Und laut Skript kommt beim dereferenzieren immer "wert" wieder raus, oder?
Can't wait the rythm...

Lks
TalkING. Freak
TalkING. Freak
Beiträge: 113
Registriert: Sa, 03. Okt. 09, 20:11

Beitrag von Lks » So, 27. Feb. 11, 17:51

ich glaub du fasst die zuweisung als ausgabe auf. kann das sein?

dolacose
TalkING. Fan
TalkING. Fan
Beiträge: 37
Registriert: Sa, 20. Mär. 10, 10:57

Beitrag von dolacose » So, 27. Feb. 11, 17:56

ach wird dann quasi 2.34 in den Speicherplatz von wert geschriebn, also 1.23 genau überschriebn. heisst es das?
Can't wait the rythm...

Lks
TalkING. Freak
TalkING. Freak
Beiträge: 113
Registriert: Sa, 03. Okt. 09, 20:11

Beitrag von Lks » So, 27. Feb. 11, 17:57

so sollte es sein.

xou
TalkING. Freak
TalkING. Freak
Beiträge: 94
Registriert: Fr, 05. Okt. 07, 15:17

Beitrag von xou » So, 27. Feb. 11, 17:58

Wenn du eine speicheradresse dereferenzierst bekommst du den Wert, der an der entsprechenden Speicheradresse steht.
müsste beim Dereferenzieren unten nicht wieder 1.23 herauskommen?
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.
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:
ach wird dann quasi 2.34 in den Speicherplatz von wert geschriebn, also 1.23 genau überschriebn. heisst es das?
Jupp.
LOLWUT

dolacose
TalkING. Fan
TalkING. Fan
Beiträge: 37
Registriert: Sa, 20. Mär. 10, 10:57

Beitrag von dolacose » So, 27. Feb. 11, 18:01

danke :)

*Fortschritte*
Can't wait the rythm...

Formelsammler
TalkING. Superposter
TalkING. Superposter
Beiträge: 297
Registriert: Mi, 17. Feb. 10, 15:55

Beitrag von Formelsammler » So, 27. Feb. 11, 20:14

Super, was ihr hier geleistet habt. :D

Ich bin erst jetzt nach Hause gekommen und hatte meine flüchtige Antwort kurz vor meinem Weggehen geschrieben.

dolacose
TalkING. Fan
TalkING. Fan
Beiträge: 37
Registriert: Sa, 20. Mär. 10, 10:57

Beitrag von dolacose » So, 27. Feb. 11, 22:02

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!
Can't wait the rythm...

Antworten