user-0 提问: 学生信息管理，运行输到一半程序就崩了，哪里错了，大佬们帮忙解释一下。

回复:
user: user-0
content: 感谢大佬们，辛苦四楼啦，加了  if (len > 30) return;就都解决了

user: user-0
content: 我删了	p = (struct student *)malloc(len * sizeof(struct student *)); 还是会停止工作呀

user: user-1
content: c是静态语言，一旦数组的大小确定了，就不能更改了，如果想要动态的话，建议使用指针

user: user-2
content: 引用 4 楼 自信男孩 的回复:#include<stdio.h> #include <malloc.h>  struct student {     int age;     char name[100];     //float score[100];     float score; }stu[30];  void input(struct student p[]) {     int len,i=0;     //printf("请输入学生人数：",&len);     printf("请输入学生人数：");     scanf("%d", &len);     //p = (struct student *)malloc(len * sizeof(struct student *));     p = (struct student *)malloc(len * sizeof(struct student));     if (!p)         return;      for(i=0; i<len; i++)     {         printf("请输入第%d个学生的信息：\n",i+1);         printf("age=");         scanf("%d",&p[i].age);         printf("name=");         scanf("%s",p[i].name);          printf("score=");         scanf("%f",&p[i].score);     }     for(i=0; i<len; i++)     {         printf("第%d个学生的信息：\n",i+1);         printf("age=%d\n",p[i].age);         printf("name=%s\n",p[i].name);         printf("score=%f\n",p[i].score);     } } int main() {     input(stu);     return 0; }  供参考～   #include<stdio.h> #include <malloc.h>  struct student {     int age;     char name[100];     //float score[100];     float score; }stu[30];  void input(struct student p[]) {     int len,i=0;     //printf("请输入学生人数：",&len);     printf("请输入学生人数：");     scanf("%d", &len);     //p = (struct student *)malloc(len * sizeof(struct student *));     //p = (struct student *)malloc(len * sizeof(struct student ));    //如果要申请也要把*去掉     if (len > 30)         return;      for(i=0; i<len; i++)     {         printf("请输入第%d个学生的信息：\n",i+1);         printf("age=");         scanf("%d",&p[i].age);         printf("name=");         scanf("%s",p[i].name);          printf("score=");         scanf("%f",&p[i].score);     }     for(i=0; i<len; i++)     {         printf("第%d个学生的信息：\n",i+1);         printf("age=%d\n",p[i].age);         printf("name=%s\n",p[i].name);         printf("score=%f\n",p[i].score);     } } int main() {     input(stu);     return 0; }  用这个版本吧，供参考～

user: user-2
content: #include<stdio.h> #include <malloc.h>  struct student {     int age;     char name[100];     //float score[100];     float score; }stu[30];  void input(struct student p[]) {     int len,i=0;     //printf("请输入学生人数：",&len);     printf("请输入学生人数：");     scanf("%d", &len);     //p = (struct student *)malloc(len * sizeof(struct student *));     p = (struct student *)malloc(len * sizeof(struct student));     if (!p)         return;      for(i=0; i<len; i++)     {         printf("请输入第%d个学生的信息：\n",i+1);         printf("age=");         scanf("%d",&p[i].age);         printf("name=");         scanf("%s",p[i].name);          printf("score=");         scanf("%f",&p[i].score);     }     for(i=0; i<len; i++)     {         printf("第%d个学生的信息：\n",i+1);         printf("age=%d\n",p[i].age);         printf("name=%s\n",p[i].name);         printf("score=%f\n",p[i].score);     } } int main() {     input(stu);     return 0; }  供参考～

user: user-3
content: 错误1， stu是已经分配了空间，在全局区，所以在input中不需要再分配空间了 错误2， sizeof(struct student)应该是分配student结构体的大小，而不是指针大小

user: user-4
content: input传入的就是一个数组没有必要再动态分配内存啊，你早已经设定stu大小为30

user: user-0
content: 大佬们帮帮忙