我有一个结构数组,我打算在for循环中将数组的每个元素传递给单独的pthread。
这是我的结构:
struct arrayData{
int *a;
int *b;
int up, low;
}
这是指向第一个结构和malloc的指针(dunno,如果我完全了解这里发生的事情):
struct arrayData * instance;
instance = malloc(sizeof(struct arrayData)*n);
这是我对pthread_create的调用:
pthread_create( &thread[i], NULL, add, (void *)instance[i]);
对于该行,我收到消息“无法转换为指针类型”。
这条线有什么问题?
答案 0 :(得分:6)
您正在尝试将结构转换为最后一个参数中的指针。您需要使用&
传递结构的地址。
pthread_create( &thread[i], NULL, add, &instance[i]);
如jørgensenmentioned,void *
演员阵容是不必要的。
答案 1 :(得分:2)
instance
的类型为struct arrayData *
,因此instance[i]
的类型为struct arrayData
,这是一个聚合,而不是指针。预期用途可能是
pthread_create(&thread[i], NULL, add, &instance[i]);
演员,顺便说一句,毫无意义。