gpt4 book ai didi

c - 如何在终止线程之前将线程数据复制到数组?

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:53 25 4
gpt4 key购买 nike

我试图从一个方法中复制 C 中的线程数据,该方法使用指向结构类型数组的指针引用线程的结构。

我试图使用“&”符号来获取结构数据,但在这样做时收到了 make 错误。我想在结构类型的线程终止之前复制整个结构的数据。

Person queue[300];
Person statsArray[300];
// the queue contains Person structs that have been given data already
// within another method, prior to calling Leave().

typedef struct
{
struct timeval startChange;
struct timeval endChange;
struct timeval arrive;

int id;
int changingTime;
int storeTime;
int returning;
int numVisits;
int type;
int queuePos;
} Person;

void Leave(int queuePosition)
{
Person *aPerson = &queue[queuePosition];

statsArray[statsArrayIndex] = &aPerson;
statsArrayIndex++;
}

编译时,我收到“从类型‘Person ** {aka struct **}’分配给类型‘Person {aka struct }’时不兼容的类型”的错误

最佳答案

根据错误信息,有问题的行是:

statsArray[statsArrayIndex] = &aPerson;

Person** 分配给 Person。如果您想复制每个结构元素,那么您可能需要:

statsArray[statsArrayIndex] = *aPerson;

请注意,对于大型结构数组,结构复制的开销可能很大。根据您的程序,重新设计您的程序可能会更好/可能,以便不制作副本而只使用指向它的指针(例如,不要让线程破坏 queue)。

关于c - 如何在终止线程之前将线程数据复制到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54718537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com