繁体   English   中英

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

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

我想我已经了解了如何创建和销毁它的总体思路,但是我找不到访问每个对象的方法。 这是我的创建方式:

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.status,将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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM