#define SIZE (10)
size_t i = 0;
int *p = NULL;
int a[SIZE]; /* Setting up the values to be i*i */
for(i = 0; i < SIZE; ++i)
a[i] = i * i;
} /* Reading the values using pointers */
for(p = a; p < a + SIZE; ++p)
Here, in the initialization of p in the ﬁrst for loop condition, the array a decays to a pointer to its ﬁrst element, as it would in almost all places where such an array variable is used.
Then, the ++p performs pointer arithmetic on the pointer p and walks one by one through the elements of the
array, and refers to them by dereferencing them with *p.