Problem Listen
-
Ich habe jetzt einfach einem Buch mal folgendes entnommen:
struct typedef xxx_list_item { void *data; struct xxx_list_item *next; }xxx_List;Eigentlich müsste der Computer sich doch aufhängen schon beim Deklarieren der STruktur. Wenn er dann next erstellt macht er doch in next die ganze struktur rein und darin ist doch gleich der nächste next zeiger enthalten. Das müsste doch ewig so weiter laufen und irgendwann müsste der Computer doch abstürzen oder so. Warum macht er das nicht???
-
Weil das nur nen Zeiger ist und dessen Größe kennt der Compiler ja.
-
Aber bei Listen muss man am Ende jahr die Werte auch auf Null setzen. Eigentlich müssten die Zeiger doch aber och viel weiter( unendlich weiter) deklariert sein weil das doch trotzdem eine unendlich Kette bilden müsste wenn immer ein weiterer Zeiger bestandteil des Zeigers ist.
-
Hallo
du hast das Thema Zeiger und Adressen noch nicht verstanden.
Lies zum Beispiel hier noch mal nach.bis bald
akari
-
Hi,
Hier siehst du, wie man's machen kann: http://www.c-plusplus.net/forum/viewtopic-var-t-is-129765-and-highlight-is-.html
Mfg
GPC
-
Ändern wir mal dein Beispiel:
struct Node { void* data; void* next; }; //Verwendung: Node n1, n2, n3; char str[] = "123"; n1.data = (void*)str; n1.next = (void*)&n2; n2.data = (void*)str; n2.next = (void*)&n3; n3.data = (void*)str; n3.next = NULL; //Ende markierenOb da nun void* als Typ steht oder Node* ist egal, beides sind Zeiger und speichern eine Adresse, um was für einen Typ es sich dabei handelt gibt man mit dem Typ vor dem "", welcher ja einen Zeiger überhaupt erst ausmacht, an.
void ist ein Zeiger der auf alles mögliche zeigen kann, er speichert also nur eine Adresse, was dahinter steht weiß nur der Programmierer (oder auch nicht ;)).Bei Node* dagegen weiß der Compiler, dass du hier die Adresse auf ein Node-Objekt speichern möchtest.
-
Thx das wird mir sicherlich sehr helfen.
Mfg Living Dead
-
I love you. :xmas1: