我正在尝试在结构中动态创建一个数组

I'm trying to dynamically create an array within a struct

本文关键字:一个 数组 创建 动态 结构      更新时间:2023-10-16

这是我的函数。

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,size,type,compareValue};
}

这是我初始化结构的地方

StoredData testData[5]={{0,50,5,1},{1,25,5,2},{2,40,2,3},{3,10,5,4},{4,80,3,5}};

现在,我大约 20% 确定它不起作用的原因是因为我需要使用 NEW 函数来创建数据,但我尝试搜索网络,但我找不到任何可以帮助我的东西。

我想发生的是,我想通过函数传递结构数组以将其大小增加 1。

这里有几个问题。其中之一是,正如您所怀疑的那样,您无法delete静态定义的东西。这个问题可以通过一个静态定义和一个执行动态分配并复制静态数据的初始化函数来解决。

另一个问题是您在temp变量上使用按值调用。这可能不太明显,因为如您所知,您可以修改temp指向的数据 - 问题是您还想执行temp = tempStruct;,大概,您想影响调用方对传入值的视图......如果要影响调用方看到的内容,则需要按引用调用。

相关文章: