If you want to use this trick with your (relatively large) arrays you want to code the struct as:
typedef struct {
int x[128][5][9];
} My3Darr;
I think this answers your question but this solution will move fairly large amounts of memory around.
A better way to do it is to use pointers to the structs and exchange the pointers. ["left as an exercise for the student."]