Получается что массив сам по себе это указатель на первый элемент этого массива?
К примеру:
int array[3];
Если мы попробуем присвоить ссылку всему массиву (не знаю зачем):
int &link = array; //То мы получим ошибку
Но если сделаем так:
int &link = *array; // Все будет норм, но ссылка присвоится только первому элементу массива
Т.е. сам по себе array это адрес в памяти но *array уже значение. Можно попробовать сделать cout в консоль
Ведет себя как указатель.
Раз *array дало значение равное array[0], по этой же логике попробуем обратится ко второму элементу этого массива
*(array + 1);
И при выводе в консоль получаем значение второго элемента
И т.д.
То есть:
array[0] = *(array + 0)
array[1] = *(array + 1)
array[2] = *(array + 2)