我需要在堆上声明一个结构数组,然后从堆栈上的并行数组传输数据,并从计算传输到每个结构。我宣布了
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;
我的程序访问第一条记录,但在访问第二条记录的第一个字段后崩溃。我不明白为什么它适用于第一个记录,但在第二个记录中死了?我是否正确访问了结构?
谢谢。
答案 0 :(得分:2)
要分配数组,您需要new
的数组形式,方括号:
Grades *art1301 = new Grades[200];
// ^^^^^
数组大小可以是动态确定的数量。
答案 1 :(得分:0)
您没有为数组分配内存,只为一个元素分配。
正如有人在评论中所说,关键在于new Grades
指令
此外,除非您之前声明了另一个i
变量(这是一种不好的做法),否则该代码无法编译,因为(art1301 + i)->studentName = names[i];
将找不到变量i