【问题标题】:Size of int array C++int 数组 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
  • 知道!它并没有显示全部。它只显示第一个元素的地址。这就是为什么你只看到一个。如果它是一个数组(不是指针),您可以看到所有元素。

标签: c++ string integer


【解决方案1】:

如果它是一个指针,调试器不会显示整个数组。它显示了数组的地址和数组指向的第一个元素。所以你的代码没有问题。

如果它被定义为一个数组,你可以看到它:

int HwGrades[100]; 

如果你真的想使用指针并查看它的内容,你有两种选择:

  1. 将其定义为数组,对其进行调试,修复/验证您的代码并返回指针。

  2. 我不知道你是什么环境,但通常有一个内存视图选项。您可以随时检查阵列中的内容。只需打开 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 很高兴听到。如果您能对对您有帮助的答案投票,我将不胜感激,因为我对这个网站还很陌生,需要建立自己的声誉。
    猜你喜欢
    • 2012-09-11
    • 2017-02-20
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多