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.

See also  Essential Measures for Safeguarding Your Digital Data
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist