C & C ++: В чем разница между указателем и адресом массива?

Код C ++ 11:

int a[3];
auto b = a;       // b is of type int*
auto c = &a;      // c is of type int(*)[1]

Код C:

int a[3];
int *b = a;
int (*c)[3] = &a;

Значенияb а такжеc такие же.

В чем разница междуb а такжеc? Почему они не одного типа?

ОБНОВЛЕНИЕ: я изменил размер массива с 1 до 3.

Ответы на вопрос(3)

Ваш ответ на вопрос