C++ 如何为c+;的不同变量类型的结构元素创建动态数组+;?

C++ 如何为c+;的不同变量类型的结构元素创建动态数组+;?,c++,dynamic-memory-allocation,C++,Dynamic Memory Allocation,我有以下结构: struct student { char *firstName; int exam1; }; 代码的其余部分在main函数中。 我询问用户他们在一个班级中有多少学生,并将其存储在numstudent中: int numStudents; cout << "How many students do you have in your class? "; cin >> numStudents; int numstudent; 女学生; 现在我

我有以下结构:

struct student {
   char *firstName;
   int exam1;
};
代码的其余部分在main函数中。 我询问用户他们在一个班级中有多少学生,并将其存储在numstudent中:

int numStudents;
cout << "How many students do you have in your class? ";
cin >> numStudents;
int numstudent;
女学生;
现在我必须创建一个动态数组来存储numStudents的名称,并要求用户输入前面输入的学生数量的名称和考试分数。这是我目前掌握的代码。Cin有效。但是当我尝试输出时,系统就退出了

student *ptr = new student[numStudents];

cout << "Enter name, exam1 for each student: ";
for(i = 0; i < numStudents; i++)
{
    cin >> ptr[i].name;
    cin >> ptr[i].exam1;
}
for(i = 0; i < numStudents; i++)
    {
        cout << ptr[i].name;
        cout << ptr[i].exam1;
    }

student*ptr=新学生[numStudents];
cout>ptr[i].名称;
cin>>ptr[i].exam1;
}
对于(i=0;icoutptr是数组,而不是ptr.name。。。
实际上,您所做的是将数组中第一项的属性视为数组,但事实并非如此。
您应该将其更改为:

student *ptr = new student[numStudents]; 
cout << "Enter name, exam1 for each student: "; 
for(i = 0; i < numStudents; i++) 
{ 
    cin >> ptr[i]->name; 
    cin >> ptr[i]->exam1; 
}
student*ptr=新学生[numStudents];
cout>ptr[i]->名称;
cin>>ptr[i]>exam1;
}

您还可以在此

中阅读有关此错误消息的更多信息。我这样做了,但它不允许我输出代码,只允许在未完成的情况下退出。输出的格式是否相同?像库特