Ничего не нужно объяснять, это просто, как правила синтаксического анализа для объявлений работают в C ++:
char & x[5] // declare x as array 5 of reference to char (not valid C++!)
char (&x)[5] // declare x as reference to array 5 of char
Внимание: Первая версия недопустима в C ++, поскольку выне может иметь массив ссылок.Это просто объяснение синтаксиса объявления.(Извините, что потратил так много времени, чтобы получить это право, и благодаря полезным комментариям!)
Вы можете заключать идентификатор типа в произвольные уровни скобок, если хотите, так что вы также можете сказать char &(x)[5]
(первый случай) или char (((&x)))[5]
(второй случай).