A struct with a flexible array member, apparently, is not intended to be declared, but rather used in conjunction with a pointer to that struct. When declaring a flexible array member, there must be at least one other member, and the flexible array member must be the last member in that struct.
Let's say I have one that looks like this:
struct example{
    int n;
    int flm[]; 
}
Then to use it, I'll have to declare a pointer and use malloc to reserve memory for the structure's contents.
struct example *ptr = malloc(sizeof(struct example) + 5*sizeof(int)); 
That is, if I want my flm[] array to hold five integers. Then, I can just use my struct like this:
ptr->flm[0] = 1; 
My question is, shouldn't I be able to just use a pointer instead of this? Not only would it be compatible pre-C99, but I could use it with or without a pointer to that struct. Considering I already have to use malloc with the flm, shouldn't I just be able to do this?
Consider this new definition of the example struct;
struct example{
    int n; 
    int *notflm; 
}
struct example test = {4, malloc(sizeof(int) * 5)}; 
I'd even be able to use the replacement the same way as the flexible array member:
Would this also work? (Provided the above definition of example with notflm)
struct example test; 
test.n = 4; 
notflm = malloc(sizeof(int) * 5); 
 
     
    