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. */