Возможный дубликат:
Можно ли рассматривать 2D-массив как непрерывный массив 1D?
Рассмотрим следующий код:
int array2d[10][10];
int *array1d = array2d[0];
Я никогда не слышал о реализации там, где это не сработало, но является ли законным доступ и управление array2d через array1d? Какой из разделов стандарта позволяет это? Есть ли что-нибудь в стандарте, предотвращающее реализацию добавлением дополнительного пространства или дополнения между каждым из массивов второго уровня (не тем, что необходимо, но все же)?
Бонусный вопрос: есть ли способ доступа к array2d как int[100], для которого не требуется reinterpret_cast или C-стиль?