当我编译它时,它说学生格拉德斯没有初始化。有什么问题?
#include <iostream>
using namespace std;
int takeGrade1(int *grades) {
int i, noStudents;
cout << "No of students: ";
cin >> noStudents;
grades = new int[noStudents];
for (i = 0; i < noStudents; i++) {
cout << "Enter the grade: ";
cin >> grades[i];
}
return noStudents;
}
int main() {
int *studentGrades, no, i;
no = takeGrade1(studentGrades);
cout << endl << "Grades: " << endl;
for (i = 0; i < no; i++)
cout << studentGrades[i] << endl;
delete[]studentGrades;
return 0;
}
答案 0 :(得分:5)
当我编译它时,它说学生格拉德斯没有初始化。
说实话! studentsGrades
变量尚未初始化,并且您将其值作为参数传递给takeGrade1
方法。
有什么问题?
好吧,使用尚未初始化的变量值的问题是您使用的是未定义的值。程序的运行时行为将是不可预测的。在这种情况下,它可能会因违反细分而导致崩溃&#34;。
事实上,你不应该传递studentGrades
的值。你应该通过它的地址;例如变化
int takeGrade1(int *grades)
到
int takeGrade1(int *& grades)
并更改通话,依此类推。或者,更改方法,使其>&gt;返回&lt;&lt;数组,等等。