Question: I'm trying to understand a piece of code shown below. I'm having problems with understanding what "array +7" or "array,+3" means. Does it increment the first number in the array by 7/3?

```
int array[8] = {1,2,4,8,16,32,64,128}; 
int *ptr_array[4];
int *dyn_array = malloc(sizof(int)*8);

ptr_array[0] = array;
ptr_array[1] = array +7;
ptr_array[2] = array +3;
ptr_array[3] = dyn_array;

```

Answer: 
`array + 7` is a pointer to the eight element of the array, it's equal to `&array[7]`, because `x[y]` is defined as `*(x + y)`.
The name of an array variable, when used as an expression, can decay to a pointer to the first element of the array. So when you declare

```
T a[10];

```

then `a` can decay to the address of `a[0]`. This is in fact used whenever you use subscripting: `a[i]` is identical to `*(a + i)`, which itself uses the rules of pointer arithmetic.

So `a + 7` is the address of the eighth element of the array (which is perhaps one-past-the-end of the array if the array has only seven elements).