我正在处理用c ++编写的代码:
int *V;
V = new int[nfilas*ncols];
iret=pthread_create(&threadList[i], NULL, worker_function, (void*)(&V)[nfilas*ncols]);
将“V”(一个int数组)传递给此函数:
int *matrix=(int*)ptr;
for( int r=0; r<nfilas; ++r ){
for( int c=0; c<ncols; c++ ){
printf("%d ", matrix[r*ncols+c]);
}
我的问题是我无法将该void指针转换为int元素数组。我怎么解决这个问题?我尝试了很多东西,但我不知道我做错了什么。提前谢谢
答案 0 :(得分:3)
你的演员阵容太多了......
使用pthread_create(..., V); // V is already a pointer
答案 1 :(得分:1)
您可以安全地从int *
投射到void *
并返回......
int *V;
V = new int[nfilas*ncols];
iret = pthread_create(
&threadList[i], NULL, worker_function, static_cast<void *>(V));
在你的功能......
int *matrix = static_cast<int *>(ptr);
for(int r = 0; r < nfilas; r++){
for(int c = 0; c < ncols; c++){
printf("%d ", matrix[r*ncols+c]);
}
}