创建指向结构数组的指针数组的指针,然后访问结构中的变量

Create a pointer to an array of pointers to arrays of structs and then access the variable in a struct

本文关键字:数组 结构 指针 访问 变量 然后 创建      更新时间:2023-10-16

我想我得到了如何创建和销毁它的一般想法,但我找不到访问每个对象的方法。下面是我创建它的方法:

CCyIsoPktInfo   **arrayOfPointers = new CCyIsoPktInfo*[QueueSize];
for (int i = 0; i < QueueSize; ++i)
{
     arrayOfPointers[i] = new CCyIsoPktInfo[PACKETS_PER_TRANSFER];
}

我是这样销毁它的:

for (int i = 0; i < QueueSize; ++i)
{
    delete[] arrayOfPointers[i];
}
delete[] arrayOfPointers;

但是我需要访问每个nth_Object。给出指向该数组的nth_Pointer。一般的思路是这样的:

for (int nth_Object = 0; nth_Object < PACKETS_PER_TRANSFER; ++nth_Object)
{
    var[nth_Object] = (*arrayOfPointers[nth_Pointer]).[nth_Object].status;
}

我正在正确地创建和销毁它们?如何访问元素?

要遍历2D数组,可以使用嵌套循环,例如

for (int nth_Object = 0; nth_Object < QueueSize; ++nth_Object)
{
    for (int nth_Pointer = 0; nth_Pointer < PACKETS_PER_TRANSFER; ++ nth_Pointer)
    {
        std::cout << arrayOfPointers[nth_Object][nth_Pointer].status;
    }
}

尽管对于它的价值,我建议使用std::vector而不是动态分配您自己的数组

std::vector<std::vector<CCyIsoPktInfo>> data;

然后你可以像

这样迭代
for (auto const& row : data)
{
    for (auto const& element : row)
    {
        std::cout << element.status;
    }
}