I have a piece of code here that I'm a bit confused about. It seems that if I use: `p = &j`, it takes two increments just to begin traversing `a[]`:

```
#include <stdio.h>

int main(void) {
  int a[4] = {5,2,6,4};
  int j = a[0];
  int *p;

  p = &j;

  printf("*p = %d\n", *p);
  printf("a[0] = %d\n", a[0]);
  printf("address of a[0] = %p\n", &a[0]);

  printf("\np++\n\n");
  p++;

  printf("*p = %d\n", *p);
  printf("a[1] = %d\n", a[1]);
  printf("address of a[1] = %p\n", &a[1]);

  printf("\np++\n\n");
  p++;

  printf("*p = %d\n", *p);
  printf("a[2] = %d\n", a[2]);
  printf("address of a[2] = %p\n", &a[2]);

  return 0;
}

```

If I use `p = &a[0]`, then it works fine. Why is it when I use `&j`, it takes two `p++`'s to start. You can see `*p = 5` twice before it starts incrementing through the array. Why is this? Any help would be appreciated.