Listing 3 Illustrates pointer arithmetic

/* arith.c: Illustrate pointer arithmetic */
#include <stdio.h>
#include <stddef.h>

main()
{
   float a[] = {1.0, 2.0, 3.0};
   float *p;
   ptrdiff_t diff;

   /* Increment a pointer */
   printf("sizeof(float) == %u\n",sizeof(float));
   p = &a[0];
   printf("p == %p, *p == %f\n",p,*p);
   ++p;
   printf("p == %p, *p == %f\n",p,*p);

   /* Subtract two pointers */
   diff = (p+1) - p;
   printf("diff == %d\n",diff);
   diff = (char*)(p+1) - (char*)p;
   printf("diff == %ld\n",(long)diff);
   return 0;
}

/* OUTPUT:
 * sizeof(float) == 4
 * p == FFEA, *p == 1.000000
 * p == FFEE, *p == 2.000000
 * diff == 1
 * diff == 4 */

/* End of File */