Pointer

WorldRacer

Erfahrenes Mitglied
Hi leuts,

öhm hab da ne frage: Wofür sind Pointer eigentlich gut

Ich weiß wie sie funktionieren und so, aber wöfür sind die eigentlich da? Man kann doch eigentlich direkt auf die Variablen zugreifen

//edit: ach ja und noch eine Frage: Wozu sind die Schlüsselwörter new und delete gut?
 
Zuletzt bearbeitet:
So...Öst - Kroa 0:1 ...naja also das mit den Pointern hab ich nun verstanden, aber das mit der Adressverwaltung mit new und delete (also delete denk ich mal is dazu da variablen "rauszuschmeißen", aber new is für mich vollkommen unlogisch) hab ich noch nich kapiert...

Danke im Vorraus....


MArco
 
ach moment, das mit der adressverwaltung hat den vorteil dass man keine variablen benötigt, sondern nur die speicheradresse, wenn ich das so richtig erkenne oder?
 
Ich versteh dein Problem zwar nicht ganz aber ich hoff mal das hilft dir.

Also du hast richtig erkannt dass ein Zeiger auf eine Speicheradresse zeigt.

Der Sinn von new ist ganz einfach.
new reserviert dir Speicher auf dem Heap und gibt die Adresse zurück.
Du darfst nicht auf Speicher zugreifen der nicht reserviert wurde.
Deswegen musst du auch delete nutzen, damit der Speicher wieder freigegeben wird und somit frei ist, falls wieder neuer Speicher reserviert werden muss.

Zeiger kann man für viele unterschiedliche Dinge nutzen.
Ein Array ist zB auch nichts anderes als ein Zeiger. Er zeigt einfach auf Array[0].
 
ja, das ha ich ja auch kapiert, aber warum? wofür is das gut? Da nimmt man doch einfach variablen und gut is?...
 
Mit einfachen Variablendeklarationen wird der Speicher statisch reserviert, d.h. du must beim Schreiben des Programmes schon ganz genau wissen, wieviel Speicher du verwenden willst. Mit "new" dagegen kannst du den Speicher dynamisch, also während der Programmlaufzeit belegen. Eine Anwendung wäre, wenn z.B. eine Datei unbekannter Größe eingelesen und deren Inhalt in einer Datenstruktur gespeichert werden soll.

Gruß
MCoder
 
Hallo,
Ein Array ist zB auch nichts anderes als ein Zeiger. Er zeigt einfach auf Array[0].

ich glaube da kann ich so nicht zustimmen :) Man muss zwischen den Begriffen schon genau differenzieren. Ein Zeiger ist eigentlich eine Variable die auf dem Stack (je nach Architektur 2, 4 oder 8 byte groß) liegt und eine Adresse speichern kann. Dementsprechend kann man auf einen Zeiger eine Zuweisung machen und somit Operationen wie Inkrement oder Dekrement anwenden. Mit der Anfangsadresse eines Arrays (also dem Arraysymbol) geht das nicht.

Gruß,
RedWing
 
Zurück