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