As my teacher told me ,array declaration can't accept address as an assignment.

```
int a[]={1,2};
int b[2]=a;

```

This shows an error as invalid initializer.
But i was playing with such things and found 
 weird example as following.

```
int a[][3] = {1, 2, 3, 4, 5, 6};
int (*ptr)[3] = a;

```

This is also a declaration of an array whose address is kept with ptr pointer and this accept the address of 2 Dimensional array a,but this shows no error.
Why,can somebody explain me in simple words? thanks in advance.