当前位置:  开发笔记 > 编程语言 > 正文

int数组C++的大小

如何解决《int数组C++的大小》经验,为你挑选了2个好方法。

我试图在整数时分配一个新数组(参见下面的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的回答.



1> seleciii44..:

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

如果将它定义为数组,您可以看到它:

int HwGrades[100]; 

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

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

    我不知道你的环境是什么,但通常有一个内存视图选项.您可以随时查看阵列中的内容.只需打开IDE的内存视图并查看指针的地址即可.

编辑:

显然有第三种(也是最好的)选择.参见Rabbi Shuki的回答.



2> Ralph Tandet..:

调试器只显示一个元素.原因如下:

类型HwGradesint*.那么在显示HwGrades调试器应该做什么的内容时呢?调试器不知道指针实际指向数组的第一个元素.它假设它只是指向一个int.因此,调试器只显示实际大小为2的数组的第一个元素.

如果您使用的是Visual Studio调试器,则可以HwGrades,2在监视窗口中编写以查看该数组的前两个元素.更换2用任何你逗你的幻想.;)

但是,通常我强烈建议将STL容器std::vector用于动态数组.它将更容易编程,调试器将成为你的朋友,没有麻烦.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有