C将int 2d数组转换为void *然后返回int 2d数组

时间:2016-03-08 12:53:55

标签: multidimensional-array casting int void

如何转换初始化的int 2d数组,如下所示:

int 2darray[9][9];

进入void *然后再回到2d数组。这个给了我一个不兼容的指针类型错误

int **sub = *((int **)2darray);

1 个答案:

答案 0 :(得分:0)

int ** 的演员应该是这样的:

int **sub = ((int **)2darray);

你不能将指针强制转换回数组,它只是没有意义。但是,您可以将指针强制转换回数组指针,如https://stackoverflow.com/a/20046703/6024122所示。正如那个答案所指出的那样,这种情况非常罕见,我从来没有亲眼见过它。

ETA:pthread_create要求其参数为void * arg,因此您应该执行以下操作:

pthread_create(..., (void *) 2darray);

然后

int **ptr = (int**) arg;