定义形式如下:

struct books {
    int count;
    double average;
    double scores[];    //伸缩型数组成员
};

它必须满足以下几点:

1、伸缩型数组必须是结构的最后一个成员;
2、结构中必须至少有一个成员;
3、伸缩型数组类似普通数组,只是它的方括号内必须为空;

它存在的意义:

定义struct books 类型的变量,并不是为了让此数组中存值(初始值)而是希望声明
一个该变量的指针;然后在函数中使用时,动态的分配数组长度以后再赋值。

pf = malloc(sizeof(struct books) + n * sizeof(double)); //这里的n即为伸缩数组的长度