Я полагаю, у вас есть 2 проблемы с вашей попыткой.
Это правильный способ взять половину двумерного массива и "преобразовать" его в трехмерный массив?
Это не так.Вы разыменовываете указатель с типом float[65][3][2]
, когда фактическим типом является float[390][2]
, что является строгим нарушением псевдонимов.Чтобы обойти эту проблему, вам нужно перевести компилятор C в нестандартный режим, отключив строгое псевдонимы, или просто переписать свой код, чтобы этого не делать.
Будет ли это обращаться к нужным элементам оригинального w_2d:
Это зависит от того, как вы сохранили свои данные в исходном массиве.Это может работать, если данные хранятся в порядке, аналогичном следующему:
float[2][65][3][2]
Однако из вашей декларации w_2d
есть подозрения, что ваши данные расположены следующим образом:
float[65][6][2]
or
float[6][65][2]
В этомВ случае, если я сомневаюсь, что вы получите нужные элементы.