Answer will be 3) 2 5
When we write
int arr[size];
Then arr store the base address of array. If you notice carefully then you will see that arr is a pointer to an array of length size.
When we write,
int *p;
p = arr;
p = &arr;
p = (arr+0);
These all perform the same purpose that give you the base address of array. But when you write
p = (&arr + 1)
Then it will jump the whole array and give the next address of last element. Because arr is a pointer to array of length size, hence when you increase it by one it will be increased by size.
In behaviour,
int arr1[5];
int (*arr2)[5];
are both same. You may get picture from this.