2

我有一个结构数组,我打算将数组的每个元素传递到 for 循环中的单独 pthread 中。

这是我的结构:

struct arrayData{
int *a;
int *b;
int up, low;
}

这是指向第一个结构和 malloc 的指针(不知道我是否完全明白这里发生了什么):

struct arrayData * instance;
        instance = malloc(sizeof(struct arrayData)*n);

这是我对 pthread_create 的调用:

pthread_create( &thread[i], NULL, add, (void *)instance[i]);

对于该行,我收到消息“无法转换为指针类型”。

那条线可能有什么问题?

4

2 回答 2

8

您正在尝试将结构转换为最后一个参数中的指针。您需要将结构的地址传递给&.

pthread_create( &thread[i], NULL, add, &instance[i]);

正如 jørgensen所说void *演员阵容是不必要的。

于 2012-03-28T19:09:39.973 回答
2

instance是 type struct arrayData *,因此instance[i]是 type struct arrayData,它是一个聚合,而不是一个指针。预期用途可能是

pthread_create(&thread[i], NULL, add, &instance[i]);

顺便说一句,演员阵容毫无意义。

于 2012-03-28T19:11:20.133 回答