Sij*_*lak 0 c++ string integer
我试图在整数时分配一个新数组(参见下面的HwGrades分配)当我把HwNum = 2时,新函数只创建一个大小为1的数组!当for循环迭代2次它不会给我访问冲突帮助将不胜感激..
这是构造函数
EE_Course::EE_Course(int Course_ID, char * Course_Name, int Hw_Num, double Hw_Weigh,int Factor_)
{
CourseID = Course_ID;
CourseName = new char[strlen(Course_Name) + 1];
strcpy(CourseName, Course_Name);
HwNum = Hw_Num;
HwWeigh = Hw_Weigh;
HwGrades = new int [HwNum]; // STARTING FROM HERE
for (int i = 0; i < Hw_Num; i++) { //UNTIL HERE
HwGrades[i] = 0;
}
Factor_ = 0;
ExamGrade = 0;
}
Run Code Online (Sandbox Code Playgroud)
那些是Course类的私有变量:
protected:
int CourseID;
int HwNum;
char* CourseName;
double HwWeigh;
int ExamGrade;
int* HwGrades;
};
Run Code Online (Sandbox Code Playgroud)
如果它是一个指针,调试器不会显示整个数组.它显示了数组的地址和数组指向的第一个元素.所以你的代码没有任何问题.
如果将它定义为数组,您可以看到它:
int HwGrades[100];
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用指针并看到它的内容,你有两个选择:
将其定义为数组,调试它,修复/验证您的代码并返回指针.
我不知道你的环境是什么,但通常有一个内存视图选项.您可以随时查看阵列中的内容.只需打开IDE的内存视图并查看指针的地址即可.
编辑:
显然有第三种(也是最好的)选择.参见Rabbi Shuki的回答.
调试器只显示一个元素.原因如下:
类型HwGrades是int*.那么在显示HwGrades调试器应该做什么的内容时呢?调试器不知道指针实际指向数组的第一个元素.它假设它只是指向一个int.因此,调试器只显示实际大小为2的数组的第一个元素.
如果您使用的是Visual Studio调试器,则可以HwGrades,2在监视窗口中编写以查看该数组的前两个元素.更换2用任何你逗你的幻想.;)
但是,通常我强烈建议将STL容器std::vector用于动态数组.它将更容易编程,调试器将成为你的朋友,没有麻烦.