如何转换初始化的int 2d数组,如下所示:
int 2darray[9][9];
进入void *然后再回到2d数组。这个给了我一个不兼容的指针类型错误
int **sub = *((int **)2darray);
答案 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;