做一个结构然后给它三个成员,
struct student{
int rollno;
char name[10];
int arr[];
}stud1, stud2;现在将4条标记记录给stud1,5条标记记录给stud2。我告诉面试官,我们必须给数组一定的大小,否则它不会被分配任何空间,否则会产生编译器错误。他说,根据C的新标准,这是可能的。最后,我不明白如何做it.Do,有人有建议吗?我试着做一个不动产,但我不确定它是否会起作用。
发布于 2013-10-26 16:54:37
示例本身是错误的,因为无法声明自动对象(stud1和stud2)。但你可以写
struct student *s = malloc(sizeof *s + number_of_arr_elems * sizeof s->arr[0]);发布于 2013-10-26 16:53:29
它是一个灵活的数组成员。此特性已在C99中添加。它允许结构类型的最后一个成员具有不完全数组类型。C99标准中的6.7.2.1解释了这个特性。
“作为特例,具有多个命名成员的结构的最后一个元素可能具有不完整的数组类型;这称为灵活数组成员.”
这一段的其余部分描述了它的用法。
https://stackoverflow.com/questions/19609260
复制相似问题