Bedeutung von "->"



  • Hallo...ich habe ein Beispielprogramm wo in Listen sachen umgeordnet werden.
    Versuche mir gerade Verständis zum Programm zu verschaffen....allderings weiß ich nicht richtig was: -> bedeutet...Hier ein Bsp:

    // Neues Element in die Liste aufnehmen
    //-------------------------------------
    NewElement->Next = First;
    First = NewElement;
    // 1. Element aus der Liste entfernen
    //-------------------------------------
    Element = First;
    First = Element->Next;
    Element->Next = NULL;

    (-> hat irgendwas mit Zeigern zu tun ...aber das wars dann auch....kann mir jemand erklären wie -> funktioniert und was es machen?!...hab schon gegoogelt....aber der ignoriert "->" immer



  • -> ist das gleiche wie (*zeiger).foo also . für Zeiger
    Bei NewElement->Next ist NewElement ein Zeiger. Wäre es keiner würdest du NewElement.Next schreiben.



  • Also wenn NewElement der Zeiger ist,
    wie müsste das dann aussehen
    dann ist der inhalt von First eine Adresse

    wie schreib ich das mit * und & statt mit ->???



  • Mit welchem Buch lernst du? Sowas sollte in den ersten Kapiteln erklärt werden.



  • #include <iostream>
    class AA
    {
      private:
        int b;
      public:
        AA(const int v = 123456) : b(v) {} // default constructor
    
        inline int get() const { return b;}
        inline void set(const int v) { b = v;}
    };
    
    int main(int argc, char *argv[])
    {
        AA keinZeiger (654321);
        AA * zeiger = new AA;
    
       // keintZeiger als nicht zeiger
       std::cout << keinZeiger.get()  << std::endl;
    
       // nimm die Referenz auf keinZeiger und dereferenziere den Methodenaufruf
       std::cout << (&keinZeiger)->get() << std::endl;
    
       // nimm den Zeiger und dereferenziere
       std::cout << zeiger->get() << std::endl;
    
       // nimm das Object auf das der Zeiger zeigt und ruf dessen Methode auf
       std::cout << (*zeiger).get() << std::endl;
    
       // confuse all
       std::cout << (*(&keinZeiger)).get() << std::endl;
    
        return 0;
    }
    

    Fragen ist immer gut, im Zweifel bau dir einfach ne Testklasse und spiel rum ...



  • toblerone schrieb:

    Also wenn NewElement der Zeiger ist,
    wie müsste das dann aussehen
    dann ist der inhalt von First eine Adresse

    wie schreib ich das mit * und & statt mit ->???

    Ich verstehe Dich nicht. Kannst Du nochmal anders fragen?
    Wie müsste was aussehen?



  • Ahh...ok....ich hab mit der gebastelten Klasse rumgespielt....und das ganze jetzt verstanden....man man man....
    Alle unklarheiten beseitigt...danke nochmal für die schnelle hilfe


Log in to reply