Codeschnipsel mit Zeigern und Stuff
-
Kann mir jemand folgenden Codeschnipsel erklären?
Klasse **Klassen; int zahl = 10; Klassen = new Klasse*[zahl]; for( int i = 0; i < zahl; i++ ) { klassen[i] = new Klasse(1,2,3); }Blick da nicht so ganz hinter, speziell was das mit den ** auf sich hat. Also das was mit Zeigern ist weis ich, aber warum da zwei ** sind.
-
so was schon mal gesehen
int a[10][10];
wenn ja ist das gleiche wie
int **a;
Es ist ein Pointer array.
Pointer auf ein Pointer halt
-
Array != Pointer !!!
-
also das es ein zeiger auf ein zeiger ist, war mir klar. Nur warum muss ich hier einen Zeiger auf einen Zeiger benutzten.
-
Cefour schrieb:
so was schon mal gesehen
int a[10][10];
wenn ja ist das gleiche wie
int **a;Nö, ist es nicht. int[10][10] ist erstmal nichts anderes als linearer Speicher von 10*10 ints, Zeiger gibt es hier nirgends. Und Zeiger auf Zeiger schon gar nicht.
michaelsa schrieb:
also das es ein zeiger auf ein zeiger ist, war mir klar. Nur warum muss ich hier einen Zeiger auf einen Zeiger benutzten.
Weil new nunmal einen Zeiger zurückgibt.
Wenn du ein Objekt mittels new erzeugst, erhälst du einen Zeiger darauf zurück.
T* foo = new T;Und wenn du jetzt ein Array von solchen T Zeigern mit new anlegst, erhälst du halt einen Zeiger auf T*, also T**.
T** bar = new T*[N];