Pthreads将void *参数转换为int数组

时间:2013-11-19 21:08:06

标签: c++ arrays casting pthreads

我正在处理用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元素数组。我怎么解决这个问题?我尝试了很多东西,但我不知道我做错了什么。提前谢谢

2 个答案:

答案 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]);
    }
}