Flexible Array Members in a structure in C

Flexible Array members in a structure in C means we can declare array without its dimension within a structure and its size will be flexible in nature. Flexible array member must be the last member of class.

Here is an example:


//structure of type employee and must contain at least one more named member
in addition to the flexible array member.
struct employee
   int emp_id;
   int name_len;
   int emp_size; //‘emp_size’ variable is used to store the size of flexible
   character array emp_name[].
   char emp_name[]; //Flexible array member emp_name[] should be the last member of class.
struct employee *createEmployee(struct employee *e, int id, char a[])
   e = (struct employee *)malloc( sizeof(*e) + sizeof(char) * strlen(a)); //memory allocation
   e->emp_id = id;
   e->name_len = strlen(a);
   //Assigning size according to size of emp_name which is a copy of user provided
   array a[].
   strcpy(e->emp_name, a);
   return e;
void printEmployee(struct employee *e) //print the details of the employee.
   printf("Employee_id : %d
" "Employee Name : %s
" "Name Length: %d

", e->emp_id, e->emp_name, e->name_len); } int main() {    struct employee *e1 = createEmployee(e1, 26, "Ram");    struct employee *e2 = createEmployee(e2, 53, "Madhu");    printEmployee(e1);    printEmployee(e2);    printf("Size of structure Employee: %lu
",    sizeof(struct employee));    return 0; }


Employee_id : 26
Employee Name : Ram
Name Length: 3
Employee_id : 53
Employee Name : Madhu
Name Length: 5
Size of structure Employee: 12