我需要在堆上声明一个结构数组,然后将数据从堆栈中的并行数组传输到计算结构中。我宣布在C++中在堆上创建一个结构数组
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;
我的程序访问的第一个记录,但它崩溃它访问的第二记录的第一场之后。我不明白它为什么会在第一张唱片上奏效,但是在第二张唱片中死亡?我正确访问结构吗?
谢谢。
这是一个提示:这是错误的(为了你的目的):'成绩* art1301 =新成绩;' – chris 2012-04-28 22:10:13
你在堆上只声明一个成绩结构。您没有足够的内存分配给多个人,所以您可能会因此而违反书面规定。为了能够在堆上工作一个以上的成绩,那么这个改变应该是'Grades * art1301 = new Grades [i + 1]',我假设i + 1是你想要分配的结构数。 – 2012-04-28 22:10:53
请不要使用指针算术来索引数组。使用索引操作符'[]'。 – 2012-04-28 22:19:40