Frames[2].TestArrayPointer
имеет тип double**
*(Frames[2].TestArrayPointer)
имеет тип double*
Итак, *(Frames[2].TestArrayPointer) - 1
- это временный тип double*
. Временное значение - это значение, вы не можете взять его адрес.
Я думаю, что вы хотите:
&(*((Frames[2].TestArrayPointer)-1))
, который также является double*
, но он предшествует Frames[2].TestArrayPointer
, а не временному.
И если мы избавимся от «отменяющих» операторов и лишних паренов:
Frames[2].TestArrayPointer - 1