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);
    }
    

Anmelden zum Antworten