Listing 2

double d[5] = {1., 2., 3., 4., 5.};
                  /* Assume this starts address 100 */
double *ch;
double e;

ch = d;              /* 100 placed into ch */

*(ch++) = 5.;        /* 5. placed in d[0]
                    ch incremented to 108.

++(*ch);             /* Contents of d[1] (at address 108)
                    incremented by 1, to 3. */

*(++ch) = 7.;        /* ch incremented to 116
                    7. placed in d[2] (at address 116) */

(*ch)++              /* The 7. at d[2] is incremented to 8. */

e = ++(*ch);         /* The 8. at d[2] is incremented to 9.
                    9. is placed in e */

e = (*ch)++;         /* The 9. at d[2] is placed in e
                    d[2] is incremented to 10. */