Hallo Besucher, der Thread wurde 1,5k mal aufgerufen und enthält 3 Antworten

letzter Beitrag von MOS am

C Verständnisfrage

  • ich bin heute über das Konstrukt


    ++*i;


    gestoßen mit int *i=(int *) malloc(sizeof(int));


    interessanterweise inkrementiert das ++ nicht *i also den Inhalt von i sondern i


    wie ich daraufkomme?


    ++ und * sind beide auf der gleichen Ebene der precedence of operators Liste


    Auf dieser Ebene wird von rechts nach links assoziiert.


    Also müßte *i erst asoziiert werden und dann erst ++


    Das hieße es würde mit ++ der Inhalt *i inkrementiert werden?


    Es wird jedoch i und nicht der Inhalt von i inkrementiert.

  • interessanterweise inkrementiert das ++ nicht *i also den Inhalt von i sondern i

    Äh, nö?

    Es wird jedoch i und nicht der Inhalt von i inkrementiert.

    Tja, falsch.


    Wie lautet eigentlich die Verständnisfrage? :D

  • Ich hab's zur Sicherheit trotzdem gerade noch mal mit einem Testprogramm nachvollzogen.


    Also, in ++*i; wird wirklich *i und nicht etwa i inkrementiert. Ein C Compiler, der das anders macht, ist kaputt:

    Bei der zweiten printf()-Gruppe steht ptr immer noch auf dem gleichen Wert und ptr[0] wurde um 1 erhöht.