Variable-length data in structs

Variable-length data in structs

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?

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.


Share the Post: