我试图在整数时分配一个新数组(参见下面的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; }
那些是Course类的私有变量:
protected: int CourseID; int HwNum; char* CourseName; double HwWeigh; int ExamGrade; int* HwGrades; };
seleciii44.. 8
如果它是一个指针,调试器不会显示整个数组.它显示了数组的地址和数组指向的第一个元素.所以你的代码没有任何问题.
如果将它定义为数组,您可以看到它:
int HwGrades[100];
如果你真的想使用指针并看到它的内容,你有两个选择:
将其定义为数组,调试它,修复/验证您的代码并返回指针.
我不知道你的环境是什么,但通常有一个内存视图选项.您可以随时查看阵列中的内容.只需打开IDE的内存视图并查看指针的地址即可.
编辑:
显然有第三种(也是最好的)选择.参见Rabbi Shuki的回答.
如果它是一个指针,调试器不会显示整个数组.它显示了数组的地址和数组指向的第一个元素.所以你的代码没有任何问题.
如果将它定义为数组,您可以看到它:
int HwGrades[100];
如果你真的想使用指针并看到它的内容,你有两个选择:
将其定义为数组,调试它,修复/验证您的代码并返回指针.
我不知道你的环境是什么,但通常有一个内存视图选项.您可以随时查看阵列中的内容.只需打开IDE的内存视图并查看指针的地址即可.
编辑:
显然有第三种(也是最好的)选择.参见Rabbi Shuki的回答.
调试器只显示一个元素.原因如下:
类型HwGrades
是int*
.那么在显示HwGrades
调试器应该做什么的内容时呢?调试器不知道指针实际指向数组的第一个元素.它假设它只是指向一个int
.因此,调试器只显示实际大小为2的数组的第一个元素.
如果您使用的是Visual Studio调试器,则可以HwGrades,2
在监视窗口中编写以查看该数组的前两个元素.更换2
用任何你逗你的幻想.;)
但是,通常我强烈建议将STL容器std::vector
用于动态数组.它将更容易编程,调试器将成为你的朋友,没有麻烦.