C - >运算符冻结函数调用?

1 c pointers record

对于编程作业,我应该创建一个模型学生数据库.要初始化数据库,我们必须编写一个函数InitDB来分配所有内存,等等.这是我到目前为止所写InitDBstruct内容:(包括内容,main()以防万一)

typedef struct {
    double mathGrade;
    } stuDB;

typedef struct {
    int numStudents;
    stuDB students[MaxStudents];
    } classDB;

main(){
   int avGrade;
   classDB *example;
   InitDB(example);
   //printf("Average class grade is %d\n",AvGrade(example));   <----ignore
   getchar();
}

void InitDB(classDB *example){
 int i=-1,numS;
 printf("How many students?");
 scanf("%d",&(example->numStudents);
 stuDB *pstudents[numS]; //array of pointers to each student rec of type stuDB
 do {
    pstudents[i] = (stuDB *)malloc(sizeof(stuDB));
    if(pstudents[i]==NULL) break;
    i++;
    } while(i<numS);
 pstudents[0]->mathGrade = 42;     //just for testing
 pstudents[1]->mathGrade = 110;
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,它冻结在第3行InitDB(scanf行).当我说冻结时,我的意思是,如果我使第二个参数scanf不是指针变量,它的命令提示符也是如此.但是&(example->numStudents)应该已经是一个指针......对吗?所以我没有想法.为什么这样做,我该如何解决?

另外,我不太确定我malloc是否正确设置了语句,但由于后一个问题而无法确定它是否有效.我是在正确的轨道......还是什么?

sus*_*tus 5

没有classDB实例 - 只是指向classDB的指针.将代码更改为:

   classDB example;
   InitDB(&example);
Run Code Online (Sandbox Code Playgroud)