C 中结构中的灵活数组成员
cserver side programmingprogramming更新于 2025/5/4 18:07:17
C 中结构中的灵活数组成员意味着我们可以在结构中声明没有维度的数组,并且其大小本质上是灵活的。灵活数组成员必须是类的最后一个成员。
以下是示例:
示例
#include #include #include //employee 类型的结构,除了灵活数组成员外,还必须至少包含一个命名成员。 struct employee { int emp_id; int name_len; int emp_size; //‘emp_size’ 变量用于存储灵活字符数组 emp_name[] 的大小。 char emp_name[]; //灵活数组成员 emp_name[] 应为类的最后一个成员。 }; struct employee *createEmployee(struct employee *e, int id, char a[]) { e = (struct employee *)malloc( sizeof(*e) + sizeof(char) * strlen(a)); //内存分配 e->emp_id = id; e->name_len = strlen(a); //根据 emp_name 的大小分配大小,emp_name 是用户提供的副本 array a[]. strcpy(e->emp_name, a); return e; } void printEmployee(struct employee *e) //打印员工的详细信息。 { 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