#include <stdio.h>
#define SIZE (10)
int main()
{
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)
{
printf("%d\n", *p);
}
return 0;
}
Here, in the initialization of p
in the first for
loop condition, the array a
decays to a pointer to its first 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
.