Изучаю указатели , есть задача "Как трёхмерный динамический массив выглядит в памяти, если my_3d_array_height=2, my_3d_array_width=3, my_3d_array_depth=4?". Есть ответ на эту задачу:
spoilerint ***AllocateLargeMemoryBlockFor3DArray (int height, int width, int depth) {
int * large_memory_block = new int[ height * width * depth ];
int ***my_3d_array = new int**[ height ];
for (int row_index = 0; row_index < height; ++row_index) {
my_3d_array [ row_index ] = new int * [ width ];
for (int column_index = 0; column_index < width; ++column_index) {
my_3d_array [ row_index ][ column_index ] = &large_memory_block [ ( row_index *width + column_index ) *depth ];
}
}
return my_3d_array;
}
Не понимаю зачем каждый элемент массива ссылается на другой блок выделенной памяти large_memory_block