Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Theofanikus

Frischling

  • »Theofanikus« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Schwalbach am Taunus

  • Private Nachricht senden

1

02.03.2010, 10:18

Unterschiedliche Direferenzierungszeichen beim Heap

Hey,
Ich habe nach langer Pause mal wieder angefangen zu programmieren und hab mich nochmal durch das Buch C++ für Spieleprogrammierer gelesen.
In Kapitel 7 wird ja der Umgang mit dem Heap erklärt. Jetzt habe ich mich 2 Sachen gefragt:
Nachdem Speicher auf dem Heap reserviert wurde und die Adresse in einem Zeiger gespeichert wurde.
1. Warum wird das * weggelassen obwohl man eine Variable verändert. Normalerweise würde man so doch auf die Adresse zugreifen.

C-/C++-Quelltext

1
pSpieler->m_Energie = 40;

trotzdem funktioniert es so und mit * krieg ich ne Fehlermeldung.

2. Wieso wird im Listing 7.9 Dass Direferenzierungszeichen

C-/C++-Quelltext

1
pSpielerliste[i].Init()

benutzt anstatt dass

C-/C++-Quelltext

1
pSpielerliste[i]->Init()

Normalerweise wird das Letztere doch für Zeiger verwendet oder?

danke im Voraus.

2

02.03.2010, 11:22

p->x ist das selbe wie (*p).x aber es sieht schöner aus.
Mit . greift man auf die einzelnen Elemente zu, da ein Zeiger aber keine Elemente hat, sondern nur das Objekt auf das er zeigt, muss man ihn vorher dereferenzieren, mit dem * Operator.
Da man ständig per Zeiger auf Elemente zugreifen muss, gibt es -> denn das tippt sich schöner und sieht besser aus.
Lieber dumm fragen, als dumm bleiben!

Theofanikus

Frischling

  • »Theofanikus« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Schwalbach am Taunus

  • Private Nachricht senden

3

02.03.2010, 11:59

Ah ok.
Soweit verstanden, aber beim Listing7.9 ist es ja so das
keine der beiden arten benutzt wird sondern

C-/C++-Quelltext

1
pSpielerliste[i].Init()

Wenn mann also ein Array aus Instanzen mit dem Heap erzeugt geht nur diese schreibweise.
was ja eigentlich ein bisschen wiedersprüchlich ist weil dann beide schreibweisen zusammengewürfelt werden.

4

02.03.2010, 12:30

Ach, Arrays sind eh böse, man sollte stattdessen die Container aus der Standardlib benutzen (std::list, std::vector, std::map usw.)

Der [] Operator macht wiederum nichts anderes als (*(pList+i)) (natürlich wird da noch auf die Größe des Types geschaut und so), d.h. du hast den Zeiger, gehts i Elemente weiter und dereferenzierst diese Adresse dann.
Lieber dumm fragen, als dumm bleiben!

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

02.03.2010, 14:23

Zitat von »"Jonathan_Klein"«

Ach, Arrays sind eh böse, man sollte stattdessen die Container aus der Standardlib benutzen (std::list, std::vector, std::map usw.)

das lernt er erst im neunten kapitel ;)

zu deinen fragen: die werden alle im buch beantwortet. vielleicht solltest teile der vorherigen kapitel nochmal überfliegen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

6

02.03.2010, 16:13

Du hast doch die ungarische notation! pSpielerliste, p ist die notation für Zeiger; pSpielerliste ist ein array von Zeigern. dergestalt, dass ( :D ) man den -> operator zum dereferenzieren benötigt.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Theofanikus

Frischling

  • »Theofanikus« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Schwalbach am Taunus

  • Private Nachricht senden

7

10.03.2010, 18:23

Danke für die Antworten ham mir echt geholfen

Werbeanzeige