SS>Почему??
По-видимому потому, что при (T)expr к expr применяется стандартное преобразование array-to-pointer?
SS>Тогда, получается, операция взятия адреса ( arr_p = &arr)
SS>эквивалентна операции приведения к указателя??( arr_p = (char (*)[8][8])arr)
Похоже на то.
SS>А такое: arr_p = (char (*)[8][8])&arr — указатель на указатель??
Ну, если предположить наличие array — to — pointer преобразование, то это просто преобразование указателя в указатель — при этом хоть тип у них разный, значение родинаковое. Но все это верно при предположении, что к expr применяется array-to-pointer преобразование. А это можно проверить, например, так (если лениться и не искать в стандарте)
char a[8][8] = {};
char (*pa)[8] = static_cast<char (*)[8]>(a);