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

问题描述 投票:2回答:1

我具有以下结构:

struct student {
   char *firstName;
   int exam1;
};

其余代码在main函数中。我问用户班上有多少学生,并将其存储在numStudents中:

int numStudents;
cout << "How many students do you have in your class? ";
cin >> numStudents;

现在,我必须创建一个动态数组来存储numStudents的名称,并要求用户输入名称和考试分数,以供较早输入的学生人数。这是我到目前为止的代码。辛工程。但是当我尝试输出时,系统将退出。

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;
    }

c++ dynamic-memory-allocation
1个回答
0
投票

ptr是数组,而不是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; 
}

您还可以在此answer中阅读更多有关此错误消息的信息>

© www.soinside.com 2019 - 2024. All rights reserved.