C:两个不同的阵列指向相同的结构

时间:2016-04-02 16:22:31

标签: c arrays pointers struct

我正在解决一个问题,我有一个"主阵列"指向typedef struct programs的指针。对于我创建的每个项目/结构,我将内存分配给programs* temp变量并将其存储到数组programs* master_array[x]中。

但是,我的问题要求我处理master_array中的错误,如果program进入"阻止"状态,然后我必须分别管理那些(那些)过程。

我想创建一个名为programs* blocked_array[y]的第二个数组,并存储在那里被阻止的程序。在这种情况下,我可以有两个指向同一program的数组。但是,当我完成处理被阻止的program时,如何取消分配/取消引用blocked_array[y]指向该program的指针,而不会影响master_array[x]指针?

我是否创建一个空的program temp,而不是为此temp程序分配内存,并使blocked_array[y]指向该temp程序以有效地清空{{1} }}?

这是否会产生某种意外后果,或者这样做是否会阻止被阻止的数组在保留blocked_array指针的同时指向它?任何想法都会有所帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您只需在bool isBlocked;中添加struct programs字段,然后就可以通过单个数组处理此字段

if(master_array[x]->isBlocked)
{
    // Do something
}
else
{
    // Do something else
}

或者,您可以使用另一个数组来存储" isBlocked"信息:

bool isBlocked[sizeof master_array / sizeof master_array[0]] = {0};

...

isBlocked[x] = true;

...

if(isBlocked[x])
{
    // Do something
}
else
{
    // Do something else
}