Flexible array members in C structures means that we can declare an array without dimensions in the structure and its size is inherently flexible. Flexible array members must be the last members of the class.
Here is an example:
#include #include #include //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</p><p>" "Employee Name : %s</p><p>" "Name Length: %d</p><p></p><p>", 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</p><p>", 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
The above is the detailed content of In C language, variable array members in a structure. For more information, please follow other related articles on the PHP Chinese website!