c++ - 我的 C++ 函数在不应该的时候破坏了变量

标签 c++ arrays function struct delete-operator

此函数的目的是采用一个结构,并将数组扩大 1。它通过将数组复制到临时数组、删除并重新创建更大尺寸的原始数组来实现此目的。我的问题是,当我运行函数时,结构中的所有值都变成了“-17891602”。 如果我错了,请纠正我,但我相信这是在删除变量时显示的值?我无法弄清楚问题所在。但这是定义。

void Array::addValueStruct(int id, int size, int type, int compareValue, StoredData temp[])
{
    //struct
    StoredData* tempStruct = new StoredData [arrSize+1];
    for (int i=0;i<arrSize;i++)
    {
        tempStruct[i] = temp[i];
    }

    arrSize = arrSize + 1;

    delete [] temp;

    temp = tempStruct;

    temp[arrSize-1].id = id;
    temp[arrSize-1].size = size;
    temp[arrSize-1].type = type;
    temp[arrSize-1].compareValue = compareValue;
}

此外,不确定这是否有帮助,但是函数调用。

test.addValueStruct(5,5,5,5,testData);

更新:问题已解决!

最佳答案

问题是数组指针是按值传递给函数的。这意味着当您将其重新分配为指向不同的数组时,此更改不会传播回调用方。

您需要通过指针或引用传递它。

关于c++ - 我的 C++ 函数在不应该的时候破坏了变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075341/

相关文章:

c++ - 具有不变性的快速类 int 类型? C++

c++ - 来自嵌套列表的成员,如何调用外部数据

javascript - 重复函数 JavaScript

javascript - 在具有原型(prototype)属性的匿名对象上使用 new?

javascript - 带参数的 Phaser 按钮处理函数

c++ - 友元函数是继承的吗?为什么基类 FRIEND 函数会作用于派生类对象?

c++ - boost 测试不 init_unit_test_suite

java - 写入输出文件时如何将二维数组行转换为制表符分隔的字符串

python - 使用基于字符串数组中元素的集合名称在 pymongo 中创建 MongoDB 集合

php - CodeIgniter - 从数组中获取下一条记录