关于结构体和sizeof()的运用解释

#include

typedef struct
{
char *name;
int id;
unsigned int age;
char group;
float score;
} Student;

void print_students(Student stu)
{
printf("%s\t%d\t%d\t%c\t%.2f\n",
stu.name, stu.id, stu.age, stu.group, stu.score);
}

int main(int argc, char** argv)
{
Student cls[] = {
{"张三", 1001, 16, 'A', 95.50},
{"李四", 1002, 15, 'A', 90.00},
{"王五", 1003, 16, 'B', 80.50}
};

size_t i, num_stu = sizeof(cls) / sizeof(Student);
float total = 0, average = 0;
printf("=============== 学生基本信息 ===============\n");
printf("姓名\t学号\t年龄\t小组\t成绩\n");
printf("--------------------------------------------\n");
for (i = 0; i < num_stu; ++i) {
    print_students(cls[i]);
    total += cls[i].score;
}
printf("============================================\n");
average = total / num_stu;
printf("班级平均成绩:%.2f", average);

return 0;

}

函数里Student cls[] = {
{"张三", 1001, 16, 'A', 95.50},
{"李四", 1002, 15, 'A', 90.00},
{"王五", 1003, 16, 'B', 80.50}
};是什么意思?

num_stu = sizeof(cls) / sizeof(Student);
i < num_stu;
这个判断的是什么?,有什么作用吗?

函数里Student cls[] = {
{"张三", 1001, 16, 'A', 95.50},
{"李四", 1002, 15, 'A', 90.00},
{"王五", 1003, 16, 'B', 80.50}
}; 定义一个结构体并初始化
num_stu = sizeof(cls) / sizeof(Student); 用来判断有多少名学生·
i < num_stu 是用于for循环遍历学生成绩

你可以参考下这篇文章:关于sizeof()里面的坑