Was ist der Unterschied?



  • Hi Leute,

    //--------------------------------------------------------------
    ++(*p)     //pre-increment thing pointed to
    (*p)++ 	//post-increment thing pointed to
    //--------------------------------------------------------------
    *(p++) 	//access via pointer, post-increment pointer
    *(++p) 	//access via pointer which has already been incremented
    //--------------------------------------------------------------
    

    Was ist der Unterschied zwischen jeweils den 1. beiden und den 2. beiden?

    MfG ::john::



  • Huhu,

    wenn ich mir die Kommentare so durchlese:

    Wird bei den ersten beiden der Wert inkrementiert.

    Und bei den zweiten beiden der Pointer inkrementiert und dann dereferenziert.



  • Auf den ersten Block bezogen, ist es also egal ob ich

    ++(*p)
    

    oder

    (*p)++
    

    benutze um den Wert zu inkrementieren?

    MfG ::john::



  • Huhu,

    Hier wird p sofort inkrementiert.

    int i=12;
    int* p=&i;
    printf("%i",++(*p)); // 13
    printf("%i",*p);     // 13
    

    Hier wird p erst bei der nächsten Anweisung inkrementiert:

    int i=12;
    int* p=&i;
    
    printf("%i",(*p)++); // 12
    printf("%i",*p);    // 13
    


  • Jetzt hab ich es gecheckt!
    Danke für die Erklärung 👍
    MfG ::john:: 🙂


Anmelden zum Antworten