Zeiger soll nach Funtkionsaufruf auf ein anderes Element zeigen



  • Hallo zusammen

    ich möchte gerne den Zeiger so verändern das er nach dem Aufruf einer Funktion auf ein anderes Elements zeigt.

    struct Elements{
     int a;
     int b;
     struct myPointer;
    }
    
    void myFunction (struct Elements * pointer)
    {
       pointer = pointer->myPointer;
    }
    
    int main(){
       struct Elements * pointer = (struct Elements *)malloc(sizeof(struct Elements));
       // daraus baue ich eine liste etc. auf...
       myFunction(pointer);
       // jetzt möchte ich gerne das pointer auf pointer->myPointer zeigt
    }
    

    Ich hab schon ein paar Sachen ausprobiert es aber nicht hin bekommen.
    Hab mir das so in der Art vorgestellt:

    //Funktionsaufruf die Adresse wird übergeben, damit kann man den Wert als das Objekt auf das gezeigt wird bearbeiten
    myFunction(&pointer);
    
    //wie weiter weiß ich nicht bzw ergab nur Compilerfehler
    

    kann mir da jemand helfen?



  • void myFunction (struct Elements **pointer)
    {
       *pointer = (*pointer)->myPointer;
    }
    

    denke so in der richtung sollte das klappen, du kannst aber auch schön das per return erledigen

    struct Elements *myFunction (struct Elements *pointer)
    {
       return pointer->myPointer;
    }
    

    lg lolo



  • ach ja das struct müsste so aussehen 😉

    struct Elements{
     int a;
     int b;
     struct Elements *myPointer;
    }
    


  • Variante 1 hab ich gesucht, da ich die Variante 2 mit return nicht verwenden kann.
    Perfekt! Vielen Dank für die schnelle Antwort.

    Edit:

    noobLolo schrieb:

    ach ja das struct müsste so aussehen 😉

    struct Elements{
     int a;
     int b;
     struct Elements *myPointer;
    }
    

    ja hab ich hier so schnell hingeklatscht und übersehen... danke


Anmelden zum Antworten