2D数组作为pthread函数参数

时间:2018-04-24 10:50:38

标签: c arrays pthreads

我正在尝试将2d数组传递给pthread函数,但是我找不到在pthread进程中访问数组内容的方法,我该怎么办呢? 我试过了

int ** array = (int **)arg;

但是在我尝试更改存储值后它导致了段错误; 这是我的代码的一部分:

int message1[2][64];
int i = 0;
for (; i < 2; i++)
{
    int j = 0;
    for (; j < 64; j++)
    {
        message[i][j] = 1;
    }
}
pthread_t tid[1];
pthread_create(&tid[0], NULL, xD, message);

功能:

void * xD(void * arg)
{
     int ** array = (int **)arg;
     array[0][0] = 2;
}

1 个答案:

答案 0 :(得分:4)

找不到合适的副本。 int **不是2D数组,而是指向int的指针。

您要传递的内容is a pointer to an array[64] of int,即int (*array)[64]

尝试

int (*array)[64] = arg;