int 数组 C++ 的大小
Posted
技术标签:
【中文标题】int 数组 C++ 的大小【英文标题】:Size of int array C++ 【发布时间】:2016-01-04 19:40:39 【问题描述】:如果是整数,我正在尝试分配一个新数组(请参阅下面的 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;
这些是课程类的私有变量:
protected:
int CourseID;
int HwNum;
char* CourseName;
double HwWeigh;
int ExamGrade;
int* HwGrades;
;
【问题讨论】:
你怎么知道size是1? 有什么理由不能使用 std::vector?这将简化事情。 观察窗口中的@seleciii44 作为一种风格:一旦你分配给HwNum
,你应该只使用它而不是交替回Hw_Num
。
知道!它并没有显示全部。它只显示第一个元素的地址。这就是为什么你只看到一个。如果它是一个数组(不是指针),您可以看到所有元素。
【参考方案1】:
如果它是一个指针,调试器不会显示整个数组。它显示了数组的地址和数组指向的第一个元素。所以你的代码没有问题。
如果它被定义为一个数组,你可以看到它:
int HwGrades[100];
如果你真的想使用指针并查看它的内容,你有两种选择:
将其定义为数组,对其进行调试,修复/验证您的代码并返回指针。
我不知道你是什么环境,但通常有一个内存视图选项。您可以随时检查阵列中的内容。只需打开 IDE 的内存视图并查看指针的地址。
编辑:
显然还有第三种(也是最好的)选择。见Rabbi Shuki's answer。
【讨论】:
【参考方案2】:调试器只显示一个元素。原因如下:
HwGrades
的类型是int*
。那么当显示HwGrades
的内容时,调试器应该怎么做呢?调试器不知道指针实际上指向数组的第一个元素。它假定它只是指向int
。因此,调试器只显示数组中实际大小为 2 的第一个元素。
如果您使用的是 Visual Studio 调试器,则可以在监视窗口中写入 HwGrades,2
以查看数组的前两个元素。用你喜欢的任何东西替换2
。 ;)
但是,通常我强烈建议将 STL 容器 std::vector
用于动态数组。编程将更容易,调试器将成为您的朋友,没有麻烦。
【讨论】:
哇!我很感激这个解释。谢谢。 @SijaanHallak 为您添加了一些提示。 ;)【参考方案3】:如果您想在手表屏幕中查看数组的下一个单元格,您可以输入名称并添加逗号以及您想查看的单元格数量。
I.E.
HwGrades, 2
【讨论】:
@SijaanHallak 很高兴听到。如果您能对对您有帮助的答案投票,我将不胜感激,因为我对这个网站还很陌生,需要建立自己的声誉。以上是关于int 数组 C++ 的大小的主要内容,如果未能解决你的问题,请参考以下文章