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