Unterschied zwischen *p++ & p++?



  • Hi,

    gibt es eigentlich einen Unterschied zischen *p++ und p++ in folgendem Zusammenhang:

    #include <stdio.h>

    int main(void)
    {
    int var = 10;
    int *p = &var;

    *p++;
    printf("%p", p);

    p++;
    printf("%p", p);

    return 0;
    }

    In beiden Fällen wird die Adresse um 4 erhöht. Bei der einen Variante fehlt der Stern - bei der anderen nicht. Gibt es einen Unterschied??



  • Okay, meine Überlegen ist, wenn man einen * dazuschreibt, wird die Adresse zusätzlich noch derefenziert. Dies ergibt allerdings nur dann Sinn, wenn man den Wert z.B. ausgibt.



  • Pointer-to-Pointer-Hasser schrieb:

    Okay, meine Überlegen ist, wenn man einen * dazuschreibt, wird die Adresse zusätzlich noch derefenziert. Dies ergibt allerdings nur dann Sinn, wenn man den Wert z.B. ausgibt.

    exakt.

    ++ hat eine staerke bindung als *

    *p++

    ist also das selbe wie

    *(p++)

    bzw. eigentlich ja:
    *p;
    p=p+1;

    sprich: zuerst einmal den wert von *p returnen und dann p um 1 erhoehen.


Anmelden zum Antworten