The structure needs to know the size of the array, and here you're missing one dimension. If declaration and initialization were done at the same time, you could eg
int Array[][2] = {{1,2},{3,4},{5,6}};
then the compiler makes the space for the array and sets the value (otherwise that would have to be at run time, using dynamic allocation).
Secondly, in C unfortunately that practical way of initializing an array is not possible
StructType myStruct = { myArray };
That would have to be done at runtime (and C would have some trouble performing that kind of assignment in the case of dynamic allocation, for instance, since there is no mechanism to keep objects sizes up to date).
What you can do, though, is setting the size of the missing dimension, and copy the array thanks to the memory function memcpy
typedef const int Array[3][2];
typedef struct {
Array anArray;
} StructType;
int main(int argc, char **argv) {
Array myArray = {{1,2},{3,4},{5,6}};
StructType myStruct;
memcpy(myStruct.anArray,myArray,sizeof(myArray));
You can also do the structure declaration and initialization this way
StructType myStruct = { {{1,2},{3,4},{5,6}} };
and in C99, even
StructType myStruct = { .anArray = {{1,2},{3,4},{5,6}} };
structwith more than one named member; you cannot have astructwhose only member is a flexible array. And after correcting this, I don't believe that you are allowed initialize flexible arrays the way you do.