Прежде всего, извините за мой английский, если я делаю какие-либо грамматические ошибки и т.д.
Мой вопрос в том, что когда у нас есть двумерный массив, тогда, если я прав, с точки зрения компьютера и C/С++, это просто длинный одномерный массив, индексы просто помогают компилятору сопоставлять к конкретному адресу.
Этот фрагмент кода работает в Visual С++, однако я хотел бы знать, соответствует ли этот код переносимым и стандарту ( С++ 98), не вызывая сюрпризов для других архитектур и/или операционных систем:
int arr[][3] = { 1, 5, 3, 7, 5, 2, 7, 8, 9 };
const int ARR_NUM = sizeof(arr) / sizeof(int);
int* ptr = reinterpret_cast<int*>(arr); // NOT: int(*)[][3] !!!
for (int i = 0; i < ARR_NUM; ++i) {
cout << ptr[i] << endl;
}