c里面 定义结构体变量要引用另一个结构体变量 要怎么实现?

举个例子 要定义一个“班级”结构体 ,里面有班级的学生数量和存放学生成绩的数组(学生数量没有上限)
struct banji{
int num;
int score[num];
};
这样报错静态变量引用错误 我也知道这样不行 应该怎么解决呢?

定义一个大数组,再定义一个记录学生数量的变量,录入一个学生就加1:

struct banji{
int num;
int score[num];
}student[10000];
int count=0;

你这个要求实现不了,结构体中score数组只能定义固定的长度

两种办法,一是数组定义一个固定的足够大的空间,比如int score[100001];二是定义成指针,当num值确定后再动态分配数组空间

结构体里定义指针,动态分配内存。下面是一个简单的例子

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

struct Class
{
    int num;
    int *scores;
};

struct Class *allocClass(int num)
{
    assert(num > 0);
    struct Class *c = (struct Class *)malloc(sizeof(struct Class));
    c->num = num;
    c->scores = (int *)malloc(num * sizeof(int));
    return c;
}

void freeClass(struct Class *c)
{
    if (c)
    {
        free(c->scores);
        free(c);
    }
}

void printClass(struct Class *c)
{
    assert(c);
    for (int i = 0; i < c->num; i++)
        printf("%d ", c->scores[i]);
    printf("\n");
}

int main()
{
    int n;
    scanf("%d", &n);
    struct Class *c = allocClass(n);
    for (int i = 0; i < n; i++)
        scanf("%d", &c->scores[i]);
    printClass(c);
    freeClass(c);
    return 0;
}