pointer pointer frage
-
Moin,
wenn man einen (struct)Pointer auf die Adresse von einem anderen (gleichem struct)Pointer installiert und anschließend den einen Pointer ändert, ändert sich dann der andere auch??
typedef struct my { int *nextptr; } mystruct;
ptr2_struct = (mystruct **) &ptr_struct; *ptr2_struct = (mystruct *) nextptr;
Zeigt jetzt ptr_struct auch auf nextptr? bzw. hat den Wert von nextptr??
Zihat
-
Bevor das Rätselraten losgeht...
wären sämtliche Deklarationen notwendig, ptr2_struct kann z.B. auch ein int sein (überspitzt ausgedrückt). Eine konkrete Antwort setzt auch eine vollständige Beschreibung voraus
-
Zeh Mau schrieb:
Bevor das Rätselraten losgeht...
wären sämtliche Deklarationen notwendig, ptr2_struct kann z.B. auch ein int sein (überspitzt ausgedrückt). Eine konkrete Antwort setzt auch eine vollständige Beschreibung voraus
typedef struct my { int *nextptr; } mystruct;
mystruct *ptr2_struct = (mystruct *) 0; mystruct *ptr_struct = (mystruct *) 0;
das ist die initialisierung von beiden pointern.
Zihat
-
Zihat schrieb:
Zeh Mau schrieb:
Bevor das Rätselraten losgeht...
wären sämtliche Deklarationen notwendig, ptr2_struct kann z.B. auch ein int sein (überspitzt ausgedrückt). Eine konkrete Antwort setzt auch eine vollständige Beschreibung voraus
typedef struct my { int *nextptr; } mystruct;
mystruct *ptr2_struct = (mystruct *) 0; mystruct *ptr_struct = (mystruct *) 0;
das ist die initialisierung von beiden pointern.
Zihat
also ptr_struct muss ein pointer** typ sein (wie es auch in deinem ersten posting war)
dann zeigt ptr2_struct auf ptr1_struct; und ptr1_struct zeigt auf die Adresse von ptr_struct; wobei ich jetzt mal ptr1_struct erfunden habe als *ptr2_struct.
*ptr2_struct entspricht in der zweiten anweisung dem *nextptr, dessen adresse aber weiterhin die vom &ptr_struct ist und deshalb wird auch dieser sozusagen mitverändert. *next_ptr besitzt somit die gleiche Adresse wie ptr_struct.
ich hoffe es war einigermaßen verständlich - pointer pointer ist nicht mehr ganz so leicht und man muss es sich immer aufzeichnen.
derTim
-
Ich denke, du möchtest das haben:
struct my { struct my* nextptr; }; typedef struct my mystruct; int main (void) { // Lokale Variable mystruct sLocal; // Pointer auf Pointer mystruct** ptr2_struct; // Pointer mystruct* ptr_struct; // ptr2 zeigt auf ptr_struct ptr2_struct = &ptr_struct; // nextptr zeigt auf eine Struktur ptr_struct->nextptr = &sLocal; return (EXIT_SUCCESS); }