Question:
Can I have variable length fields in a structure. I have tried something like:
typedef struct { int length; char data[length];};
but that won’t compile. Is there a way, or do I just have to use some pointers?
Answer:
You can declare a structure like this:
typedef struct { int length; char data[1];} DATA;
Then when you allocate memory for the structure, you can adjust its size like this:
pStruct = (DATA*)malloc(sizeof(DATA) + nLength);Even though you declared the data member as being only one character, C will allow you to access the bytes that follow.