在堆上创建结构数组 C++

Creating an Array of Structures on the Heap in C++

本文关键字:数组 C++ 结构 创建      更新时间:2023-10-16

我需要在堆上声明一个结构数组,然后将数据从堆栈上的并行数组和计算传输到每个结构中。我宣布

struct Grades
{
    string  studentName;
    int     scores[4];
    double  average;
};
....
Grades *art1301 = new Grades;
....
(art1301 + i)->studentName = names[i];
for((int i = 0 ; i < 5 ; i++ )
(art1301 + i)->scores[j] = exams[i][j];
(art1301 + i)->average = average; 

我的程序访问第一条记录,但在访问第二条记录的第一个字段后崩溃。我不明白为什么它适用于第一张唱片,但在第二张唱片中间死了?我是否正确访问了结构?

谢谢。

要分配数组,您需要数组形式 new ,带有方括号:

Grades *art1301 = new Grades[200];
//                          ^^^^^

数组大小可以是动态确定的数量。

您不是为数组分配内存,而是只为一个元素分配内存。

正如有人在评论中所说,关键在于new Grades指令

此外,除非之前声明了另一个i变量(这是一种不好的做法),否则该代码不会编译,因为(art1301 + i)->studentName = names[i];找不到变量i