Wie benutzt einen pointer?

erstmal hi an alle

ich versuche bissl programmieren zu lernen…und wie ich in vielen c++ büchern gelesen hab…komme ich nicht um die pointerprogrammierung rum…

also konkret meine frage:

  • wie erzeugt man einen pointer??

  • wie greift man auf diese adresse zu??

  • wozu braucht man einen doppel- oder dreifachpointer (bis über 30 sollt das ja gehen)??

die tutorials sind für mich zu komplex beschrieben…ich brauch eine ganz einfache und simple erklärung…

danke für eure mühe im vorraus

asi

korrekttur: wie BENUTZT man einen pointer?
sorry…habs erst jetzt gesehen

korrektur der KORREKKTUR
:wink:

Hallo OberAsi,

schöner Nick. Aber mal zu deiner Frage.

Ein Zeiger ist die Adresse eines Objekts, nicht das Objekt selber. Vergleichbar ist das mit der Adresse, wo einer deiner Freunde wohnt, und deinem Freund selbst.

also konkret meine frage:

  • wie erzeugt man einen pointer??

Pointer können in C und C++ auf verschiedene Weise erzeugt werden. Erstmal kannst du mit dem „&“-Operator die Adresse eine beliebigen Objekts herausfinden:

int x = 0;
int * pointeraufx = & x;

Danach steht in x der Wert 0, und in pointeraufx steht die Adresse im Speicher des Rechners, wo x zu finden ist.

  • wie greift man auf diese adresse zu??

Auf das Objekt zugreifen kann man durch sogenanntes Dereferenzieren. Das macht aus einem Pointer auf ein Objekt wieder das Objekt selber.

int y = *pointeraufx;

Damit ist jetzt in y der Wert des Integers, auf den pointeraufx zeigt (das war 0).

  • wozu braucht man einen doppel- oder dreifachpointer (bis
    über 30 sollt das ja gehen)??

Ein Doppelpointer ist ein Pointer auf eine Adresse, wo eine Adresse steht, wo ein Objekt zu finden ist. Beispiel:

int ** doppelpointer = & pointeraufx;

Das braucht man manchmal bei Schleifen oder mehrdimensionalen Arrays. Kommt in der Programmierung von GUIs recht viel vor, aber da ich mich davon erfolgreich fernhalte, brauche ich die selten.

die tutorials sind für mich zu komplex beschrieben…ich
brauch eine ganz einfache und simple erklärung…

Pointer sind nicht wirklich einfach zu verstehen, also Kopf hoch! Und du solltest das Thema wirklich gut lernen und viel experimentieren, denn mit Pointern kannst du dir wirklich gut in den Fuß schießen. In C++ kann man Pointer häufig durch Referenzen ersetzen („MeineKlasse & wert“ in der Argumentenliste einer Funktion oder Methode statt „MeineKlasse * wert“), denn Referenzen haben den Vorteil, daß hinter ihnen immer ein gültiges Objekt steht, was bei Pointern nicht unbedingt gegeben sein muß.

Chris

Hallo!

ich versuche bissl programmieren zu lernen…und wie ich in
vielen c++ büchern gelesen hab…komme ich nicht um die
pointerprogrammierung rum…

Ein Pointer ist ein Zeiger auf eine Speicherstelle, er speichert also nur eine Adresse im Speicher. Wenn du den Wert willst, der an dieser Stelle steht, kannst du das mit dem dereference-operator * abfragen.
Wenn du eine Variable hast und wissen willst, an welcher Speicherstelle sie steht, verwendeste du den addresse-of-operator &

also konkret meine frage:

  • wie erzeugt man einen pointer??

zb. mit
int variable = 10;
int *pointer=&variable;

bedeutet:

der Pointer zeigt auf einen Speicherplatz, der einen INT speichert.

Der Inhalt (*) des Pointers ist die Adresse (&amp:wink: der Variable. Wenn du jetzt den Wert der Variable ändern würdest (zb. variable=5:wink:, wäre der inhalt des Pointers trotzdem derselbe, denn die Speicherstelle ist ja dieselbe.
Würdest du aber den Wert hinter der Adresse abfragen, würdest du auf einmal 5 erhalten.

  • wie greift man auf diese adresse zu??

indem man den Wert des Pointers ausliest, wie den einer normalen Variable, denn er speichert ja nur die ADRESSE.

Wenn du aber die Adresse einer VARIABLEN (die einen Wert speichert) haben willst, verwendest du den addresse-of-operator &.

  • wozu braucht man einen doppel- oder dreifachpointer (bis
    über 30 sollt das ja gehen)??

zb. für dynamische Arrays.
Das ist aber IMHO a bisserl zu umfangreich um es in einem Forum zu erklären. Aber vielleicht schaffts ja jemand hier in kurz?

Viel spass beim Pointer-Werfen,
Bettina