在动态数组上使用指针时出现问题

阿卡斯

我正在从infile中读取整数,然后使用指针将它们添加到int数组中。

我已经多次遍历代码,并且一切似乎都在逻辑上流动,并且在编译器中未收到任何语法错误或警告,因此我不确定出什么问题。

该程序要求我们使用数组而不是向量,否则我认为我不会遇到这些问题。

现在我的输出正在读取各种螺丝钉。我知道这与指针有关,但目前我很茫然。

文件内:

3
456
593
94
58
8
5693
211

输出:

The items in the array are as follows.
7476376, 7475472, -17891602, 17891602, -17891602, -17891602, -17891602, -178916

collections.h

class collections
{
    public:
        collections();
        void add(int);  //adds the value to the array.
        void print();  //prints item of the array comma separated.
        ~collections();
    protected:
        int arraySize;
        int *array;
};

构造函数:

collections::collections()
{
    arraySize = 1;
    array = new int[arraySize];
}//done

无效添加:

void collections::add(int value) //adds the value to the array.
{
    //initial add to master array.
    if (arraySize == 1)
    {
        array[0] = value;
        arraySize++;
    }

    //every other add to master array.
    else
    {
        //temp array.
        int *tempArray = new int[(arraySize)];

        //copies old array into temp array.
        for (int i = 0; i < arraySize-1; i++)
        {
            tempArray[i] = array[i];
        }

        //adds new incoming value to temp array.
        tempArray[(arraySize-1)] = value;

        //new master array
        delete [] array;
        int *array = new int[arraySize];

        //copies temp to master array.
        for (int j =0; j < arraySize; j++)
        {
            array[j] = tempArray[j];
        }

        //cleanup
        delete [] tempArray;
        arraySize ++;
    }
} //done

无效打印:

void collections::print() //prints item of the array comma separated.
{
   cout << "The items in the array are as follows.\n";
    for (int i = 0; i < arraySize; i++)
    {
        cout << array[i] << ", ";
    }
}//done

抱歉,我知道这可能很简单,但是对于我一生来说,我看不到问题所在。

稻田

您不小心声明了其本地副本array覆盖了类成员:

//new master array
delete [] array;
int *array = new int[arraySize];
^^^^^

int *从最后一行删除,其余的看起来还可以。

PS:您考虑过使用std::vector<int>吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态数组出现问题

来自分类Dev

使用数组和MySQL的Codeigniter上的动态菜单出现问题

来自分类Dev

使用JQuery删除动态创建的Div时出现问题

来自分类Dev

使用jquery显示动态内容时出现问题?

来自分类Dev

使用jQuery动态创建按钮时出现问题

来自分类Dev

使用JQuery删除动态创建的Div时出现问题

来自分类Dev

我的动态数组出现问题

来自分类Dev

使用包含条件和通配符的数组时出现问题

来自分类Dev

使用换行符创建数组时出现问题

来自分类Dev

使用符号常量声明数组时出现问题

来自分类Dev

在Mavericks上使用Homebrew安装MySQL时出现问题

来自分类Dev

在Visual Studio上使用多个面板时出现问题

来自分类Dev

在滑块上使用移动效果时出现问题

来自分类Dev

在Visual Studio上使用多个面板时出现问题

来自分类Dev

使用pip在OSX上安装pyspatialite时出现问题

来自分类Dev

打印多维数组时出现问题

来自分类Dev

输出多维数组时出现问题

来自分类Dev

输出多维数组时出现问题

来自分类Dev

在Matplotlib上绘图时出现问题

来自分类Dev

c:动态分配2d char数组时出现问题?

来自分类Dev

使用双指针向结构输入值时出现问题

来自分类Dev

在C函数中修改指针时出现问题

来自分类Dev

打印指针的取消刷新值时出现问题

来自分类Dev

更改链接列表中的指针的地址时出现问题

来自分类Dev

使用Moment模块时出现问题

来自分类Dev

使用ArrayWritables时出现问题

来自分类Dev

使用ejs语法时出现问题

来自分类Dev

使用多个列表时出现问题

来自分类Dev

使用GLM时出现问题