каждый последующий элемент находится по адресу &a[i]+sizeof() . А с двумерными как?
Смотря как устроена твоя матрица внутри.
cpp code: int a[2][2] = {1, 2, 3, 4}; std::cout << *(reinterpret_cast<int*>(a) + 2); output: 3
cpp code: int a[2][2] = {0}; for (auto& i : a) for (auto& j : i) std::cout << &j << " " << (&j + 1) << std::endl; output: 0x7ffdecff2270 0x7ffdecff2274 0x7ffdecff2274 0x7ffdecff2278 0x7ffdecff2278 0x7ffdecff227c 0x7ffdecff227c 0x7ffdecff2280
Примеры выше наглядно показывают, что двумерные массивы почти ничем не отличаются от одномерных, но только тогда, когда это действительно двумерный массив, а не массив указателей или массив массивов
Через приведение двумерного массива в аналогичный одномерный
В одномерных массивах каждый последующий элемент находится по адресу &a[0]+i*sizeof(a[0]) А с двумерными &a[0]+i*M*sizeof(a[0]) + j*sizeof(a[0])
Не может, по определению массива. То, что ты хочешь, называется структура.
Обсуждают сегодня