devxlogo

Variable-length data in structs

Variable-length data in structs

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.

devx-admin

Share the Post: