C++ 如何访问结构数组中的第n个元素

C++ 如何访问结构数组中的第n个元素,c++,pointers,data-structures,C++,Pointers,Data Structures,我有一个程序,要求我创建一个保存学生信息的结构。要求使用指针并动态分配StudentInfo结构的数组。现在,我只想为每个学生存储一个ID号。我认为我正确地存储了号码,但是当我试图显示ID号码时,我遇到了问题 using namespace std; struct StudentInfo { string Name = ""; int Idnum = 0; int* Tests = { 0 }; double Average = 0.0;

我有一个程序,要求我创建一个保存学生信息的结构。要求使用指针并动态分配StudentInfo结构的数组。现在,我只想为每个学生存储一个ID号。我认为我正确地存储了号码,但是当我试图显示ID号码时,我遇到了问题

using namespace std;

struct StudentInfo
{
    string Name = "";
    int Idnum = 0;
    int* Tests = { 0 };
    double Average = 0.0;
    char Grade = 'z';
};

int main() {

    int numberOfStudents = 0,
        numberOfTests = 0;

    cout << "Enter the number of students: ";
    cin >> numberOfStudents; 
    cout << "Enter the number of tests: ";
    cin >> numberOfTests;

    StudentInfo* students = nullptr;
    students = new StudentInfo[numberOfStudents];

    for (int i = 0; i < numberOfStudents; i++) {
        cout << "Enter the student ID: ";
        cin >> students[i].Idnum;
    }

    cout << students[2]->Idnum;
    
    return 0;
}

你做
cin>>学生[i].Idnum
在中读取一个新的
Idnum
,它可以工作,但是
cout Idnum
以输出一个并获取错误。你能看出区别吗?
coutidnum
--如何访问任何数组的第三个元素,无论它是
int
double
char
还是
StudentInfo
?这:
intmain(){intarr[]={10,20,30};}
。如何打印该数组中的第三个值,
30
?scohe001,对不起,这是一个输入错误,我已经修复了它。我知道它试图访问一个越界元素。
students[2]
是一个
StudentInfo
struct,而不是
StudentInfo*
指针。如果你有一个指向你想要操作的
StudentInfo
结构的指针,它就会起作用。(是的,
students
是一个类型为
StudentInfo*
的变量,但您将其用作数组,而不是数组第一个元素的指针。)现在,您的代码中没有任何东西特别有意义作为指针,因此提出一个如何使用
->
的示例可能有点做作。
1>------ Build started: Project: Chap11Num12, Configuration: Debug Win32 ------
1>Chap11Num12.cpp
1>C:\Users\mstew\Desktop\CIS2541\week10\Chap11Num12\Chap11Num12.cpp(41,21): error C2819: type 'StudentInfo' does not have an overloaded member 'operator ->'
1>C:\Users\mstew\Desktop\CIS2541\week10\Chap11Num12\Chap11Num12.cpp(14): message : see declaration of 'StudentInfo'
1>C:\Users\mstew\Desktop\CIS2541\week10\Chap11Num12\Chap11Num12.cpp(41,21): message : did you intend to use '.' instead?
1>C:\Users\mstew\Desktop\CIS2541\week10\Chap11Num12\Chap11Num12.cpp(41,28): error C2232: '->StudentInfo::Idnum': left operand has 'struct' type, use '.'
1>Done building project "Chap11Num12.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========