Zeiger-> nachfolger ?



  • hi,

    was hat denn "->" bei den zeigern genau zu bedeuten? eine art zuweisung?

    struct knoten
    {
    int data; // Nutzdaten
    knoten* next; // Ort des nächsten Knotens
    };

    knoten push_front (knoten* anfang, int wert)
    {
    knoten* tmp = new knoten;
    tmp -> data= wert
    tmp -> next = anfang; // Nachfolger ist vorheriger Erster
    return tmp; // neuer Anfang ist Ergebnis
    }

    also würde bei tmp ->next der Zeiger tmp, den Wert ?? / die Adresse ?? vom zeiger next annehmen ?



  • Hallo,

    damit greifst du auf den Inhalt des Elementes, welches auf '->' folgt, zu. Zeiger
    muessten, bevor man auf den Inhalt auf den sie zeigen zugreifen kann,
    dereferenziert werden, was normalerweise mit dem '*'-Op geloest wird. Mit dem
    '->' spart man sich einwenig Tipparbeit. Es ist die Alternativschreibweise zu

    (*my_pointer).element //statt my_pointer->element
    

    mfg
    v R



  • A -> B ist gleichbedeutend mit (*A).B (1)
    Das heißt, dass A auf ein Objekt vom Typ einer Klasse zeigt, und B eine Komponente dieser Klasse ist.

    tmp->next = anfang bedeutet also nichts anderes, als dass dem Element next des knoten-Objektes, auf das tmp zeigt, der momentane Wert von anfang zugewiesen wird.

    (1) Das stimmt so nur, wenn A ein Zeiger ist, operator-> kann nämlich überladen werden. Allerdings sollten solche Überladungen normalerweise sicherstellen, dass die obige Identität erhalten bleibt.



  • wenn du ein struct hast greifst du mit dem .-operator auf die einzelnen members zu...

    wenn du eine zeiger auf eine struct hast musst du den erst dereferenzieren um auf die members mittels punktoperator zugreifen zu können

    struct knoten 
    { 
    int data; // Nutzdaten 
    knoten* next; // Ort des nächsten Knotens 
    }; 
    
    knoten* pk=new....; //zeiger auf einen knoten
    knoten k;  
    
    k.data=.... //zugriff auf member data des knoten k
    (*pk).data=....// sieht scheisse so aus einfacher ist dann
    pk->data=....; //ist das selbe wie (*pk).data nur besser zu lesen
    

    [edit]
    oh man war ich diesmal lahm... 😕
    [/edit]



  • scube schrieb:

    hi,

    was hat denn "->" bei den zeigern genau zu bedeuten? eine art zuweisung?

    struct knoten
    {
    int data; // Nutzdaten
    knoten* next; // Ort des nächsten Knotens
    };

    knoten push_front (knoten* anfang, int wert)
    {
    knoten* tmp = new knoten;
    tmp -> data= wert
    tmp -> next = anfang; // Nachfolger ist vorheriger Erster
    return tmp; // neuer Anfang ist Ergebnis
    }

    also würde bei tmp ->next der Zeiger tmp, den Wert ?? / die Adresse ?? vom zeiger next annehmen ?

    Nein, das Element 'next' des Objektes 'tmp' vom Typ 'knoten' zeigt danach
    auf das Objekt 'anfang'

    mfg
    v R



  • vielen dank für eure antworten.
    zeiger sind wie ihr gemerkt habt nicht gerade mein spezialgebiet. 🙂




Anmelden zum Antworten